• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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