summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Andres Klode <jak@debian.org>2016-08-31 17:18:07 +0200
committerJulian Andres Klode <jak@debian.org>2016-08-31 17:40:15 +0200
commitcf7503d8a09ebce695423fdeb2402c456c18f3d8 (patch)
tree769618a674d5636e4dffaa75de4fbcb75ae0df1e
parent923c592ceb6014b31ec751b97b3ed659fa3e88ae (diff)
Base256ToNum: Fix uninitialized value
If the inner Base256ToNum() returned false, it did not set Num to a new value, causing it to be uninitialized, and thus might have caused the function to exit despite a good result. Also document why the Res = Num, if (Res != Num) magic is done. Reported-By: valgrind
-rw-r--r--apt-pkg/contrib/strutl.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/apt-pkg/contrib/strutl.cc b/apt-pkg/contrib/strutl.cc
index 66b0078dc..cf8feb970 100644
--- a/apt-pkg/contrib/strutl.cc
+++ b/apt-pkg/contrib/strutl.cc
@@ -1171,10 +1171,11 @@ bool Base256ToNum(const char *Str,unsigned long long &Res,unsigned int Len)
tar files */
bool Base256ToNum(const char *Str,unsigned long &Res,unsigned int Len)
{
- unsigned long long Num;
+ unsigned long long Num = 0;
bool rc;
rc = Base256ToNum(Str, Num, Len);
+ // rudimentary check for overflow (Res = ulong, Num = ulonglong)
Res = Num;
if (Res != Num)
return false;