[PATCH] Fix OOB read in do_vsexp_sscan when newline+EOF is found in escape sequence
    Filippo Valsorda 
    hi at filippo.io
       
    Tue May  5 22:21:45 CEST 2015
    
    
  
The check for the available bytes performed before doing the look-ahead
was
off by one, causing a out of bound read.  Example input: 22 5c 0a |"\.|
Found with afl-fuzz and ASAN.
Signed-off-by: Filippo Valsorda <hi at filippo.io>
---
 src/sexp.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/sexp.c b/src/sexp.c
index 9bc13ca..3d8fcf3 100644
--- a/src/sexp.c
+++ b/src/sexp.c
@@ -1239,7 +1239,7 @@ do_vsexp_sscan (gcry_sexp_t *retsexp, size_t
*erroff,
 		case '\r':
 		  /* ignore CR[,LF] */
-                 if (n && (p[1] == '\n'))
+                 if ((n > 1) && (p[1] == '\n'))
 		    {
 		      p++;
 		      n--;
@@ -1249,7 +1249,7 @@ do_vsexp_sscan (gcry_sexp_t *retsexp, size_t
*erroff,
 		case '\n':
 		  /* ignore LF[,CR] */
-                 if (n && (p[1] == '\r'))
+                 if ((n > 1) && (p[1] == '\r'))
 		    {
 		      p++;
 		      n--;
--
2.3.6
    
    
More information about the Gcrypt-devel
mailing list