]> granicus.if.org Git - pdns/commitdiff
fix escaping
authorPeter van Dijk <peter.van.dijk@powerdns.com>
Thu, 11 Feb 2016 09:24:25 +0000 (10:24 +0100)
committerPeter van Dijk <peter.van.dijk@powerdns.com>
Thu, 11 Feb 2016 09:26:02 +0000 (10:26 +0100)
modules/ldapbackend/powerldap.cc

index dcb01b6769daa117f9060d7c1794cb0eefa8a6c4..fe910a6d7cdf420c213a7ffbf833657a378f1c56 100644 (file)
@@ -267,13 +267,24 @@ const string PowerLDAP::escape( const string& str )
 {
         string a;
         string::const_iterator i;
+        char tmp[4];
 
         for( i = str.begin(); i != str.end(); i++ )
         {
-               if( *i == '*' || *i == '\\' ) {
-                       a += '\\';
-               }
-               a += *i;
+            // RFC4515 3
+            if( *i == '*' ||
+                *i == '(' ||
+                *i == ')' ||
+                *i == '\\' ||
+                *i == '\0' ||
+                *i > 127)
+            {
+                sprintf(tmp,"\\%02x", (unsigned char)*i);
+
+                a += tmp;
+            }
+            else
+                a += *i;
         }
 
         return a;