]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
sprintf, strcpy and const method case 7457/head
authorOtto Moerbeek <otto.moerbeek@open-xchange.com>
Tue, 5 Feb 2019 12:04:43 +0000 (13:04 +0100)
committerOtto Moerbeek <otto.moerbeek@open-xchange.com>
Tue, 5 Feb 2019 13:09:15 +0000 (14:09 +0100)
modules/ldapbackend/powerldap.cc
pdns/bindlexer.l
pdns/communicator.hh
pdns/misc.cc

index bfec0cd34f17f908319e2fea5aa63777c0752e6e..a2c1a5353f0126dc7c4abe0ba71934060172d846 100644 (file)
@@ -456,7 +456,7 @@ const string PowerLDAP::escape( const string& str )
           (unsigned char)*i == '\0' ||
           (unsigned char)*i > 127)
       {
-          sprintf(tmp,"\\%02x", (unsigned char)*i);
+          snprintf(tmp, sizeof(tmp), "\\%02x", (unsigned char)*i);
 
           a += tmp;
       }
index 8003a2740e456045cc9060b84949ae65e3f2b8bf..370dbff331709304762ebcdef161eea65d6d64d2 100644 (file)
@@ -60,25 +60,17 @@ include                 BEGIN(incl);
         include_stack_ln[include_stack_ptr++]=linenumber;
         linenumber=1;
 
-       if(*(yytext+1)=='/') {
-                if (strlen(yytext+1) >= sizeof(filename)) {
-                 fprintf( stderr, "Filename '%s' is too long\n",yytext+1);
-                 exit( 1 );
-               }
-               strcpy(filename,yytext+1);
-       }
-       else {
-               size_t bind_directory_len = strlen(bind_directory);
-               if (bind_directory_len >= sizeof(filename) ||
-                   strlen(yytext+1) + 2 >= sizeof(filename) - bind_directory_len) {
-                 fprintf( stderr, "Filename '%s' is too long\n",yytext+1);
-                 exit( 1 );
-               }
-               strcpy(filename,bind_directory);
-               strcat(filename,"/");
-               strcat(filename,yytext+1);
-       }
-       filename[sizeof(filename)-1]='\0';
+        int ret;
+        if(*(yytext+1)=='/') {
+            ret = snprintf(filename, sizeof(filename), "%s", yytext+1);
+        }
+        else {
+            ret = snprintf(filename, sizeof(filename), "%s/%s", bind_directory, yytext+1);
+        }
+        if (ret == -1 || ret >= sizeof(filename)) {
+            fprintf( stderr, "Filename '%s' is too long\n",yytext+1);
+            exit( 1 );
+        }
 
        if (!(yyin=fopen(filename,"r"))) {
          fprintf( stderr, "Unable to open '%s': %s\n",filename,strerror(errno));
index 087a3dbc5803be32b77ae19fec59a78596f8a2c1..5413e4dacf2335f9a5af69276536204d776719ae 100644 (file)
@@ -209,7 +209,7 @@ private:
   time_t d_tickinterval;
   set<DomainInfo> d_tocheck;
   struct cmp {
-    bool operator()(const DNSPacket& a, const DNSPacket& b) {
+    bool operator()(const DNSPacket& a, const DNSPacket& b) const {
       return a.qdomain < b.qdomain;
     };
   };
index f9259d3d7273876c09e2e34cc63687930ddb815e..9293a49242e3615bc6b66f02af83d06d5f847533 100644 (file)
@@ -582,7 +582,7 @@ string makeHexDump(const string& str)
   ret.reserve((int)(str.size()*2.2));
 
   for(string::size_type n=0;n<str.size();++n) {
-    sprintf(tmp,"%02x ", (unsigned char)str[n]);
+    snprintf(tmp, sizeof(tmp), "%02x ", (unsigned char)str[n]);
     ret+=tmp;
   }
   return ret;