1 // This may look like C code, but it is really -*- C++ -*-
2 //
3 // Copyright Dirk Lemstra 2018
4 //
5 // Implementation of the security policy.
6 //
7
8 #define MAGICKCORE_IMPLEMENTATION 1
9 #define MAGICK_PLUSPLUS_IMPLEMENTATION 1
10
11 #include "Magick++/SecurityPolicy.h"
12 #include "Magick++/Exception.h"
13 #include <string>
14 #include <sstream>
15
16 using namespace std;
17
anonymousCacheMemoryMap()18 bool Magick::SecurityPolicy::anonymousCacheMemoryMap()
19 {
20 return(setValue(CachePolicyDomain,"memory-map","anonymous"));
21 }
22
anonymousSystemMemoryMap()23 bool Magick::SecurityPolicy::anonymousSystemMemoryMap()
24 {
25 return(setValue(SystemPolicyDomain,"memory-map","anonymous"));
26 }
27
precision(const int precision_)28 bool Magick::SecurityPolicy::precision(const int precision_)
29 {
30 string
31 value;
32
33 value=toString(precision_);
34 return(setValue(SystemPolicyDomain,"precision",value));
35 }
36
maxMemoryRequest(const MagickSizeType limit_)37 bool Magick::SecurityPolicy::maxMemoryRequest(const MagickSizeType limit_)
38 {
39 string
40 value;
41
42 value=toString(limit_);
43 return(setValue(SystemPolicyDomain,"max-memory-request",value));
44 }
45
shred(const int passes_)46 bool Magick::SecurityPolicy::shred(const int passes_)
47 {
48 string
49 value;
50
51 value=toString(passes_);
52 return(setValue(SystemPolicyDomain,"shred",value));
53 }
54
SecurityPolicy()55 Magick::SecurityPolicy::SecurityPolicy()
56 {
57 }
58
setValue(const PolicyDomain domain_,const std::string name_,const std::string value_)59 bool Magick::SecurityPolicy::setValue(const PolicyDomain domain_,
60 const std::string name_,const std::string value_)
61 {
62 MagickBooleanType
63 status;
64
65 GetPPException;
66 status=MagickCore::SetMagickSecurityPolicyValue(domain_,name_.c_str(),
67 value_.c_str(),exceptionInfo);
68 ThrowPPException(false);
69 return(status != MagickFalse);
70 }
71
72 template <typename T>
toString(const T & value)73 std::string Magick::SecurityPolicy::toString(const T& value)
74 {
75 stringstream ss;
76 ss << value;
77 return ss.str();
78 }
79