]> git.saurik.com Git - apt.git/commitdiff
Base256ToNum: Fix uninitialized value
authorJulian Andres Klode <jak@debian.org>
Wed, 31 Aug 2016 15:18:07 +0000 (17:18 +0200)
committerJulian Andres Klode <jak@debian.org>
Wed, 31 Aug 2016 15:40:15 +0000 (17:40 +0200)
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
apt-pkg/contrib/strutl.cc

index 66b0078dc31f74a686cabe6d5266f27352665dfd..cf8feb970a102883908d3f83cc9aaf0983d9bc97 100644 (file)
@@ -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;