Avoid dereferencing pointer right after the end
authorWerner Koch <wk@gnupg.org>
Mon, 5 Nov 2012 18:01:01 +0000 (19:01 +0100)
committerWerner Koch <wk@gnupg.org>
Mon, 5 Nov 2012 18:01:01 +0000 (19:01 +0100)
* mpi/mpicoder.c (do_get_buffer): Check the length before derefing P.
--

Christian Grothoff found this bug using Valgrind.

mpi/mpicoder.c

index f499796..a3435ed 100644 (file)
@@ -270,7 +270,7 @@ do_get_buffer (gcry_mpi_t a, unsigned int *nbytes, int *sign, int force_secure)
 
   /* This is sub-optimal but we need to do the shift operation because
      the caller has to free the returned buffer.  */
-  for (p=buffer; !*p && *nbytes; p++, --*nbytes)
+  for (p=buffer; *nbytes && !*p; p++, --*nbytes)
     ;
   if (p != buffer)
     memmove (buffer,p, *nbytes);