73 #define PolicyFilename "policy.xml"
127 (
const char *) NULL, (
const char *) NULL }
187 #if defined(MAGICKCORE_ZERO_CONFIGURATION_SUPPORT)
188 status=
LoadPolicyCache(cache,ZeroConfigurationPolicy,
"[zero-configuration]",0,
228 (void) memset(policy_info,0,
sizeof(*policy_info));
229 policy_info->
path=(
char *)
"[built-in]";
291 if (name != (
const char *) NULL)
293 for (q=policyname; *q !=
'\0'; q++)
295 if (isspace((
int) ((
unsigned char) *q)) == 0)
304 for (q=policyname; *q !=
'\0'; q++)
320 if ((name == (
const char *) NULL) || (
LocaleCompare(name,
"*") == 0))
381 assert(pattern != (
char *) NULL);
383 assert(number_policies != (
size_t *) NULL);
407 *number_policies=(size_t) i;
453 assert(pattern != (
char *) NULL);
455 assert(number_policies != (
size_t *) NULL);
459 return((
char **) NULL);
462 if (policies == (
char **) NULL)
463 return((
char **) NULL);
478 policies[i]=(
char *) NULL;
479 *number_policies=(size_t) i;
516 assert(name != (
const char *) NULL);
522 return((
char *) NULL);
523 value=policy_info->
value;
524 if ((value == (
const char *) NULL) || (*value ==
'\0'))
525 return((
char *) NULL);
610 "Domain: %s; rights=%s; pattern=\"%s\" ...",
624 if ((p->
domain == domain) &&
686 if (file == (
const FILE *) NULL)
689 if (policy_info == (
const PolicyInfo **) NULL)
691 path=(
const char *) NULL;
692 for (i=0; i < (ssize_t) number_policies; i++)
696 if (((path == (
const char *) NULL) ||
698 (policy_info[i]->
path != (
char *) NULL))
700 path=policy_info[i]->
path;
702 policy_info[i]->domain);
708 if (policy_info[i]->name != (
char *) NULL)
710 if (policy_info[i]->value != (
char *) NULL)
725 if (policy_info[i]->pattern != (
char *) NULL)
727 policy_info[i]->pattern);
767 const char *filename,
const size_t depth,
ExceptionInfo *exception)
789 "Loading policy file \"%s\" ...",filename);
790 if (xml == (
char *) NULL)
796 for (q=(
const char *) xml; *q !=
'\0'; )
828 while (((*token !=
'/') && (*(token+1) !=
'>')) && (*q !=
'\0'))
855 if (file_xml != (
char *) NULL)
872 (void) memset(policy_info,0,
sizeof(*policy_info));
1020 if (p->
value != (
char *) NULL)
1022 if (p->
pattern != (
char *) NULL)
1024 if (p->
name != (
char *) NULL)
1026 if (p->
path != (
char *) NULL)
1030 return((
void *) NULL);
1080 if (policy == (
const char *) NULL)
1134 const char *name,
const char *value)
1154 if (p->
value != (
char *) NULL)
1160 (void) memset(p,0,
sizeof(*p));
1175 const PolicyDomain domain,
const char *name,
const char *value,
1183 if ((name == (
const char *) NULL) || (value == (
const char *) NULL))
1226 if ((current_value == (
char *) NULL) ||
1248 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)
MagickPrivate MagickBooleanType PolicyComponentGenesis(void)
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
MagickPrivate void PolicyComponentTerminus(void)
SemaphoreInfo * semaphore
static int StringToInteger(const char *magick_restrict value)
MagickExport LinkedListInfo * DestroyLinkedList(LinkedListInfo *list_info, void *(*relinquish_value)(void *))
struct _PolicyMapInfo PolicyMapInfo
MagickExport size_t ConcatenateMagickString(char *destination, const char *source, const size_t length)
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)
static void * AcquireCriticalMemory(const size_t size)
MagickExport void * RemoveElementByValueFromLinkedList(LinkedListInfo *list_info, const void *value)
static LinkedListInfo * policy_cache
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
MagickExport char * AcquireString(const char *source)
MagickPrivate void ResetMagickPrecision(void)
MagickExport const char * CommandOptionToMnemonic(const CommandOption option, const ssize_t type)
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 MagickBooleanType GlobExpression(const char *expression, const char *pattern, const MagickBooleanType case_insensitive)
MagickExport MagickBooleanType IsStringTrue(const char *value)
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 size_t CopyMagickString(char *destination, const char *source, const size_t length)
MagickExport int LocaleCompare(const char *p, const char *q)
#define GetMagickModule()
MagickExport const char * GetStringInfoPath(const StringInfo *string_info)
MagickExport void GetNextToken(const char *start, const char **end, const size_t extent, char *token)
#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)
static void * DestroyPolicyElement(void *policy_info)
MagickPrivate void ResetMaxMemoryRequest(void)
MagickExport void RelinquishSemaphoreInfo(SemaphoreInfo **semaphore_info)
MagickExport char * ConstantString(const char *source)
MagickPrivate void ResetVirtualAnonymousMemory(void)
MagickExport ExceptionInfo * DestroyExceptionInfo(ExceptionInfo *exception)
static MagickBooleanType IsPolicyCacheInstantiated(ExceptionInfo *)