Explorar el Código

Fix boundary checking in base-256 decoder

* src/list.c (from_header): Base-256 encoding is at least 2 bytes
long.
Sergey Poznyakoff hace 2 años
padre
commit
3da78400ea
Se han modificado 1 ficheros con 3 adiciones y 2 borrados
  1. 3 2
      src/list.c

+ 3 - 2
src/list.c

@@ -881,8 +881,9 @@ from_header (char const *where0, size_t digs, char const *type,
 	  where++;
 	}
     }
-  else if (*where == '\200' /* positive base-256 */
-	   || *where == '\377' /* negative base-256 */)
+  else if (where <= lim - 2
+	   && (*where == '\200' /* positive base-256 */
+	       || *where == '\377' /* negative base-256 */))
     {
       /* Parse base-256 output.  A nonnegative number N is
 	 represented as (256**DIGS)/2 + N; a negative number -N is