Support "module" security policy

This commit is contained in:
Cristy
2018-08-24 20:43:50 -04:00
parent fd9289abe5
commit c809ff7b9a
5 changed files with 24 additions and 9 deletions
+19 -8
View File
@@ -959,6 +959,14 @@ MagickExport MagickBooleanType InvokeDynamicImageFilter(const char *tag,
if ((*images)->debug != MagickFalse)
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",
(*images)->filename);
rights=ReadPolicyRights;
if (IsRightsAuthorized(FilterPolicyDomain,rights,tag) == MagickFalse)
{
errno=EPERM;
(void) ThrowMagickException(exception,GetMagickModule(),PolicyError,
"NotAuthorized","`%s'",tag);
return(MagickFalse);
}
#if !defined(MAGICKCORE_BUILD_MODULES)
{
MagickBooleanType
@@ -969,14 +977,6 @@ MagickExport MagickBooleanType InvokeDynamicImageFilter(const char *tag,
return(status);
}
#endif
rights=ReadPolicyRights;
if (IsRightsAuthorized(FilterPolicyDomain,rights,tag) == MagickFalse)
{
errno=EPERM;
(void) ThrowMagickException(exception,GetMagickModule(),PolicyError,
"NotAuthorized","`%s'",tag);
return(MagickFalse);
}
TagToFilterModuleName(tag,name);
status=GetMagickModulePath(name,MagickImageFilterModule,path,exception);
if (status == MagickFalse)
@@ -1234,6 +1234,9 @@ MagickPrivate MagickBooleanType OpenModule(const char *module,
ModuleInfo
*module_info;
PolicyRights
rights;
register const CoderInfo
*p;
@@ -1247,6 +1250,14 @@ MagickPrivate MagickBooleanType OpenModule(const char *module,
module_info=(ModuleInfo *) GetModuleInfo(module,exception);
if (module_info != (ModuleInfo *) NULL)
return(MagickTrue);
rights=ReadPolicyRights;
if (IsRightsAuthorized(ModulePolicyDomain,rights,tag) == MagickFalse)
{
errno=EPERM;
(void) ThrowMagickException(exception,GetMagickModule(),PolicyError,
"NotAuthorized","`%s'",tag);
return(MagickFalse);
}
(void) CopyMagickString(module_name,module,MagickPathExtent);
p=GetCoderInfo(module,exception);
if (p != (CoderInfo *) NULL)
+1
View File
@@ -1834,6 +1834,7 @@ static const OptionInfo
{ "Coder", CoderPolicyDomain, UndefinedOptionFlag, MagickFalse },
{ "Delegate", DelegatePolicyDomain, UndefinedOptionFlag, MagickFalse },
{ "Filter", FilterPolicyDomain, UndefinedOptionFlag, MagickFalse },
{ "Module", ModulePolicyDomain, UndefinedOptionFlag, MagickFalse },
{ "Path", PathPolicyDomain, UndefinedOptionFlag, MagickFalse },
{ "Resource", ResourcePolicyDomain, UndefinedOptionFlag, MagickFalse },
{ "System", SystemPolicyDomain, UndefinedOptionFlag, MagickFalse },
+1
View File
@@ -1254,6 +1254,7 @@ MagickExport MagickBooleanType SetMagickSecurityPolicyValue(
case CoderPolicyDomain:
case DelegatePolicyDomain:
case FilterPolicyDomain:
case ModulePolicyDomain:
case PathPolicyDomain:
default:
break;
+2 -1
View File
@@ -34,7 +34,8 @@ typedef enum
PathPolicyDomain,
ResourcePolicyDomain,
SystemPolicyDomain,
CachePolicyDomain
CachePolicyDomain,
ModulePolicyDomain
} PolicyDomain;
typedef enum
+1
View File
@@ -69,6 +69,7 @@
<!-- <policy domain="resource" name="throttle" value="0"/> -->
<!-- <policy domain="resource" name="time" value="3600"/> -->
<!-- <policy domain="coder" rights="none" pattern="MVG" /> -->
<!-- <policy domain="module" rights="none" pattern="{ps,pdf,xps}" /> -->
<!-- <policy domain="delegate" rights="none" pattern="HTTPS" /> -->
<!-- <policy domain="path" rights="none" pattern="@*" /> -->
<!-- <policy domain="cache" name="memory-map" value="anonymous"/> -->