Browse Source

unsigned char arrays interpreted as strings are still null-terminated in c++

git-svn-id: svn://bind10.isc.org/svn/bind10/branches/jelte-datadef@298 e5f2f494-b856-4b98-b285-d166d9295462
Jelte Jansen 15 years ago
parent
commit
b6571be9e4
1 changed files with 4 additions and 2 deletions
  1. 4 2
      src/lib/cc/cpp/data.cc

+ 4 - 2
src/lib/cc/cpp/data.cc

@@ -735,17 +735,19 @@ encode_length(unsigned int length, unsigned char type)
         type |= ITEM_LENGTH_8;
         ss << type << val;
     } else if (length <= 0x0000ffff) {
-        unsigned char val[2];
+        unsigned char val[3];
         val[0] = (length & 0x0000ff00) >> 8;
         val[1] = (length & 0x000000ff);
+        val[2] = 0;
         type |= ITEM_LENGTH_16;
         ss << type << val;
     } else {
-        unsigned char val[4];
+        unsigned char val[5];
         val[0] = (length & 0xff000000) >> 24;
         val[1] = (length & 0x00ff0000) >> 16;
         val[2] = (length & 0x0000ff00) >> 8;
         val[3] = (length & 0x000000ff);
+        val[4] = 0;
         type |= ITEM_LENGTH_32;
         ss << type << val;
     }