]> git.ipfire.org Git - thirdparty/libsolv.git/commitdiff
zchunk: fix bounds check in getuint
authorMichael Schroeder <mls@suse.de>
Fri, 20 Jul 2018 12:04:58 +0000 (14:04 +0200)
committerMichael Schroeder <mls@suse.de>
Fri, 20 Jul 2018 12:04:58 +0000 (14:04 +0200)
ext/solv_zchunk.c

index 3843c9be5ce28e4002f899e4cd1f633d9cfeb67f..a8b7f8e20bc780ccce4c29555f9b288ff637b028 100644 (file)
@@ -58,27 +58,27 @@ getuint(unsigned char *p, unsigned char *endp, unsigned int *dp)
 {
   if (!p || p >= endp)
     return 0;
-  if (p <= endp && (*p & 0x80) != 0)
+  if (p < endp && (*p & 0x80) != 0)
     {
       *dp = p[0] ^ 0x80;
       return p + 1;
     }
-  if (++p <= endp && (*p & 0x80) != 0)
+  if (++p < endp && (*p & 0x80) != 0)
     {
       *dp = p[-1] ^ ((p[0] ^ 0x80) << 7);
       return p + 1;
     }
-  if (++p <= endp && (*p & 0x80) != 0)
+  if (++p < endp && (*p & 0x80) != 0)
     {
       *dp = p[-2] ^ (p[-1] << 7) ^ ((p[0] ^ 0x80) << 14);
       return p + 1;
     }
-  if (++p <= endp && (*p & 0x80) != 0)
+  if (++p < endp && (*p & 0x80) != 0)
     {
       *dp = p[-3] ^ (p[-2] << 7) ^ (p[1] << 14) ^ ((p[0] ^ 0x80) << 21);
       return p + 1;
     }
-  if (++p <= endp && (*p & 0xf0) == 0x80)
+  if (++p < endp && (*p & 0xf0) == 0x80)
     {
       *dp = p[-4] ^ (p[-3] << 7) ^ (p[2] << 14) ^ (p[1] << 21) ^ ((p[0] ^ 0x80) << 28);
       return p + 1;