From 324fc8af296953857ebfc76deaadd4d224e081e3 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Sat, 24 Sep 2011 10:49:49 +0200 Subject: [PATCH] * ftparchive/cachedb.cc: - fix buffersize in bytes2hex * ftparchive/cachedb.cc: - make buffer fully dynamic (thanks to Colin Watson) --- debian/changelog | 8 ++++++++ ftparchive/cachedb.cc | 14 +++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/debian/changelog b/debian/changelog index 4aedf9232..255248d63 100644 --- a/debian/changelog +++ b/debian/changelog @@ -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 Wed, 14 Sep 2011 20:13:40 +0200 apt (0.8.15.8) unstable; urgency=low diff --git a/ftparchive/cachedb.cc b/ftparchive/cachedb.cc index b04244347..6573fa264 100644 --- a/ftparchive/cachedb.cc +++ b/ftparchive/cachedb.cc @@ -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) { -- 2.45.2