]> git.saurik.com Git - apt.git/commitdiff
* ftparchive/cachedb.cc:
authorMichael Vogt <egon@debian-devbox>
Sat, 24 Sep 2011 08:49:49 +0000 (10:49 +0200)
committerMichael Vogt <egon@debian-devbox>
Sat, 24 Sep 2011 08:49:49 +0000 (10:49 +0200)
  - fix buffersize in bytes2hex

* ftparchive/cachedb.cc:
  - make buffer fully dynamic (thanks to Colin Watson)

debian/changelog
ftparchive/cachedb.cc

index 4aedf9232f3dbb697b7bc91d4ccf98f7ff04251f..255248d63499136d5b3e7a24cd2c61da3e2c3f0a 100644 (file)
@@ -7,6 +7,14 @@ apt (0.8.15.9) UNRELEASED; urgency=low
   [ David Kalnischkies ]
   * Symbol file update
 
+  [ Colin Watson ]
+  * ftparchive/cachedb.cc:
+    - fix buffersize in bytes2hex
+  
+  [ Michael Vogt ]
+  * ftparchive/cachedb.cc:
+    - make buffer fully dynamic (thanks to Colin Watson)
+  
  -- Christian Perrier <bubulle@debian.org>  Wed, 14 Sep 2011 20:13:40 +0200
 
 apt (0.8.15.8) unstable; urgency=low
index b04244347f4bd258a0d593712a91287fc52eaafc..6573fa2647cb4c8150e1efd17c9e315dd74677eb 100644 (file)
@@ -294,11 +294,15 @@ bool CacheDB::LoadContents(bool const &GenOnly)
                                                                        /*}}}*/
 
 static string bytes2hex(uint8_t *bytes, size_t length) {
-   char space[65];
-   if (length * 2 > sizeof(space) - 1) length = (sizeof(space) - 1) / 2;
-   for (size_t i = 0; i < length; i++)
-      snprintf(&space[i*2], 3, "%02x", bytes[i]);
-   return string(space);
+   char buf[3];
+   string space;
+
+   space.reserve(length*2 + 1);
+   for (size_t i = 0; i < length; i++) {
+      snprintf(buf, sizeof(buf), "%02x", bytes[i]);
+      space.append(buf);
+   }
+   return space;
 }
 
 static inline unsigned char xdig2num(char const &dig) {