73 #define PolicyFilename "policy.xml" 127 (
const char *) NULL, (
const char *) NULL }
187 #if MAGICKCORE_ZERO_CONFIGURATION_SUPPORT 189 status=
LoadPolicyCache(cache,ZeroConfigurationPolicy,
"[zero-configuration]",0,
227 p->
name == (
char *) NULL ?
"" : p->
name);
230 (void) memset(policy_info,0,
sizeof(*policy_info));
231 policy_info->
path=(
char *)
"[built-in]";
293 if (name != (
const char *) NULL)
295 for (q=policyname; *q !=
'\0'; q++)
297 if (isspace((
int) ((
unsigned char) *q)) == 0)
306 for (q=policyname; *q !=
'\0'; q++)
322 if ((name == (
const char *) NULL) || (
LocaleCompare(name,
"*") == 0))
383 assert(pattern != (
char *) NULL);
385 assert(number_policies != (
size_t *) NULL);
409 *number_policies=(size_t) i;
450 if (source != (
char *) NULL)
451 length+=strlen(source);
452 destination=(
char *) NULL;
455 if (destination == (
char *) NULL)
457 if (source != (
char *) NULL)
458 (
void) memcpy(destination,source,length*
sizeof(*destination));
459 destination[length]=
'\0';
478 assert(pattern != (
char *) NULL);
480 assert(number_policies != (
size_t *) NULL);
484 return((
char **) NULL);
487 if (policies == (
char **) NULL)
488 return((
char **) NULL);
503 policies[i]=(
char *) NULL;
504 *number_policies=(size_t) i;
541 assert(name != (
const char *) NULL);
547 return((
char *) NULL);
548 value=policy_info->
value;
549 if ((value == (
const char *) NULL) || (*value ==
'\0'))
550 return((
char *) NULL);
636 "Domain: %s; rights=%s; pattern=\"%s\" ...",
650 if ((p->
domain == domain) &&
712 if (file == (
const FILE *) NULL)
715 if (policy_info == (
const PolicyInfo **) NULL)
717 path=(
const char *) NULL;
718 for (i=0; i < (ssize_t) number_policies; i++)
722 if (((path == (
const char *) NULL) ||
724 (policy_info[i]->
path != (
char *) NULL))
726 path=policy_info[i]->
path;
728 policy_info[i]->domain);
734 if (policy_info[i]->name != (
char *) NULL)
736 if (policy_info[i]->value != (
char *) NULL)
751 if (policy_info[i]->pattern != (
char *) NULL)
753 policy_info[i]->pattern);
793 const char *filename,
const size_t depth,
ExceptionInfo *exception)
815 "Loading policy file \"%s\" ...",filename);
816 if (xml == (
char *) NULL)
822 for (q=(
const char *) xml; *q !=
'\0'; )
854 while (((*token !=
'/') && (*(token+1) !=
'>')) && (*q !=
'\0'))
881 if (file_xml != (
char *) NULL)
898 (void) memset(policy_info,0,
sizeof(*policy_info));
917 (void)
GetNextToken(q,(
const char **) NULL,extent,token);
1046 if (p->
value != (
char *) NULL)
1048 if (p->
pattern != (
char *) NULL)
1050 if (p->
name != (
char *) NULL)
1052 if (p->
path != (
char *) NULL)
1056 return((
void *) NULL);
1106 if (policy == (
const char *) NULL)
1160 const char *name,
const char *value)
1180 if (p->
value != (
char *) NULL)
1186 (void) memset(p,0,
sizeof(*p));
1201 const PolicyDomain domain,
const char *name,
const char *value,
1209 if ((name == (
const char *) NULL) || (value == (
const char *) NULL))
1252 if ((current_value == (
char *) NULL) ||
1274 if ((current_value == (
char *) NULL) ||
MagickBooleanType stealth
MagickPrivate MagickBooleanType ResourceComponentGenesis(void)
#define MagickMaxRecursionDepth
static size_t StringToSizeType(const char *string, const double interval)
MagickExport const PolicyInfo ** GetPolicyInfoList(const char *pattern, size_t *number_policies, ExceptionInfo *exception)
MagickExport MagickBooleanType IsRightsAuthorized(const PolicyDomain domain, const PolicyRights rights, const char *pattern)
MagickExport size_t ConcatenateMagickString(char *magick_restrict destination, const char *magick_restrict source, const size_t length)
MagickExport MagickBooleanType ListPolicyInfo(FILE *file, ExceptionInfo *exception)
MagickExport void UnlockSemaphoreInfo(SemaphoreInfo *semaphore_info)
MagickExport void ResetLinkedListIterator(LinkedListInfo *list_info)
MagickExport ssize_t ParseCommandOption(const CommandOption option, const MagickBooleanType list, const char *options)
static SemaphoreInfo * policy_semaphore
SemaphoreInfo * semaphore
#define ThrowFatalException(severity, tag)
static int StringToInteger(const char *magick_restrict value)
MagickExport LinkedListInfo * DestroyLinkedList(LinkedListInfo *list_info, void *(*relinquish_value)(void *))
struct _PolicyMapInfo PolicyMapInfo
MagickExport SemaphoreInfo * AcquireSemaphoreInfo(void)
MagickExport MagickBooleanType InsertValueInLinkedList(LinkedListInfo *list_info, const size_t index, const void *value)
MagickExport MagickBooleanType SetMagickResourceLimit(const ResourceType type, const MagickSizeType limit)
static PolicyInfo * GetPolicyInfo(const char *name, ExceptionInfo *exception)
MagickExport ExceptionInfo * AcquireExceptionInfo(void)
MagickExport MagickBooleanType AppendValueToLinkedList(LinkedListInfo *list_info, const void *value)
MagickExport size_t CopyMagickString(char *magick_restrict destination, const char *magick_restrict source, const size_t length)
MagickExport void * RemoveElementByValueFromLinkedList(LinkedListInfo *list_info, const void *value)
static LinkedListInfo * policy_cache
MagickPrivate MagickBooleanType PolicyComponentGenesis(void)
MagickExport MagickBooleanType SetMagickSecurityPolicyValue(const PolicyDomain domain, const char *name, const char *value, ExceptionInfo *exception)
static const PolicyMapInfo PolicyMap[]
MagickExport void * GetNextValueInLinkedList(LinkedListInfo *list_info)
#define MagickCoreSignature
MagickExport void LockSemaphoreInfo(SemaphoreInfo *semaphore_info)
MagickExport unsigned char * GetStringInfoDatum(const StringInfo *string_info)
static MagickBooleanType LoadPolicyCache(LinkedListInfo *, const char *, const char *, const size_t, ExceptionInfo *)
MagickExport void GetPathComponent(const char *path, PathType type, char *component)
MagickExport ssize_t FormatLocaleFile(FILE *file, const char *magick_restrict format,...)
#define DirectorySeparator
unsigned int MagickStatusType
MagickPrivate void ResetMagickPrecision(void)
MagickExport MagickBooleanType GlobExpression(const char *magick_restrict expression, const char *magick_restrict pattern, const MagickBooleanType case_insensitive)
MagickExport const char * CommandOptionToMnemonic(const CommandOption option, const ssize_t type)
MagickExport void * AcquireCriticalMemory(const size_t size)
MagickExport void * AcquireQuantumMemory(const size_t count, const size_t quantum)
MagickExport int LocaleNCompare(const char *p, const char *q, const size_t length)
MagickExport magick_hot_spot size_t GetNextToken(const char *magick_restrict start, const char **magick_restrict end, const size_t extent, char *magick_restrict token)
MagickExport MagickBooleanType IsStringTrue(const char *value)
MagickExport MagickBooleanType IsEventLogging(void)
static MagickBooleanType SetPolicyValue(const PolicyDomain domain, const char *name, const char *value)
MagickExport char ** GetPolicyList(const char *pattern, size_t *number_policies, ExceptionInfo *exception)
MagickPrivate void ResetCacheAnonymousMemory(void)
MagickExport MagickBooleanType ThrowMagickException(ExceptionInfo *exception, const char *module, const char *function, const size_t line, const ExceptionType severity, const char *tag, const char *format,...)
MagickExport MagickBooleanType LogMagickEvent(const LogEventType type, const char *module, const char *function, const size_t line, const char *format,...)
MagickExport LinkedListInfo * NewLinkedList(const size_t capacity)
MagickPrivate void ResetStreamAnonymousMemory(void)
MagickExport int LocaleCompare(const char *p, const char *q)
#define GetMagickModule()
MagickExport const char * GetStringInfoPath(const StringInfo *string_info)
#define MagickResourceInfinity
MagickExport MagickBooleanType SetMagickSecurityPolicy(const char *policy, ExceptionInfo *exception)
MagickExport char * DestroyString(char *string)
MagickExport void * AcquireMagickMemory(const size_t size)
MagickExport void ActivateSemaphoreInfo(SemaphoreInfo **semaphore_info)
MagickExport size_t GetNumberOfElementsInLinkedList(const LinkedListInfo *list_info)
static MagickSizeType StringToMagickSizeType(const char *string, const double interval)
static LinkedListInfo * AcquirePolicyCache(const char *filename, ExceptionInfo *exception)
MagickExport char * GetPolicyValue(const char *name)
const PolicyDomain domain
MagickExport void * RelinquishMagickMemory(void *memory)
#define magick_unreferenced(x)
const PolicyRights rights
MagickPrivate char * FileToXML(const char *, const size_t)
MagickPrivate void PolicyComponentTerminus(void)
static char * AcquirePolicyString(const char *source, const size_t pad)
static void * DestroyPolicyElement(void *policy_info)
MagickPrivate void ResetMaxMemoryRequest(void)
MagickExport void RelinquishSemaphoreInfo(SemaphoreInfo **semaphore_info)
MagickPrivate void ResetVirtualAnonymousMemory(void)
MagickExport ExceptionInfo * DestroyExceptionInfo(ExceptionInfo *exception)
static MagickBooleanType IsPolicyCacheInstantiated(ExceptionInfo *)