Home | History | Annotate | Download | only in lib
      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 
     18 bool Magick::SecurityPolicy::anonymousCacheMemoryMap()
     19 {
     20   return(setValue(CachePolicyDomain,"memory-map","anonymous"));
     21 }
     22 
     23 bool Magick::SecurityPolicy::anonymousSystemMemoryMap()
     24 {
     25   return(setValue(SystemPolicyDomain,"memory-map","anonymous"));
     26 }
     27 
     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 
     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 
     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 
     55 Magick::SecurityPolicy::SecurityPolicy()
     56 {
     57 }
     58 
     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>
     73 std::string Magick::SecurityPolicy::toString(const T& value)
     74 {
     75   stringstream ss;
     76   ss << value;
     77   return ss.str();
     78 }
     79