Module Name:    src
Committed By:   christos
Date:           Sun Aug 28 15:52:22 UTC 2016

Modified Files:
        src/crypto/external/bsd/netpgp/dist/src/netpgpverify: libverify.c

Log Message:
Avoid segv when the end signature is not found!


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 \
    src/crypto/external/bsd/netpgp/dist/src/netpgpverify/libverify.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/crypto/external/bsd/netpgp/dist/src/netpgpverify/libverify.c
diff -u src/crypto/external/bsd/netpgp/dist/src/netpgpverify/libverify.c:1.10 src/crypto/external/bsd/netpgp/dist/src/netpgpverify/libverify.c:1.11
--- src/crypto/external/bsd/netpgp/dist/src/netpgpverify/libverify.c:1.10	Wed Jun 15 11:47:50 2016
+++ src/crypto/external/bsd/netpgp/dist/src/netpgpverify/libverify.c	Sun Aug 28 11:52:22 2016
@@ -2016,7 +2016,7 @@ read_ascii_armor(pgpv_cursor_t *cursor, 
 	litdata.s.data = p;
 	litdata.u.litdata.offset = (size_t)(p - mem->mem);
 	litdata.u.litdata.filename = (uint8_t *)strdup(filename);
-	if ((p = find_bin_string(datastart = p, mem->size - litdata.offset, SIGSTART, strlen(SIGSTART))) == NULL) {
+	if ((p = find_bin_string(datastart = p, mem->size - litdata.offset, SIGSTART, sizeof(SIGSTART) - 1)) == NULL) {
 		snprintf(cursor->why, sizeof(cursor->why),
 			"malformed armor - no sig - at %zu", (size_t)(p - mem->mem));
 		return 0;
@@ -2030,7 +2030,13 @@ read_ascii_armor(pgpv_cursor_t *cursor, 
 		return 0;
 	}
 	p += 2;
-	sigend = find_bin_string(p, mem->size, SIGEND, strlen(SIGEND));
+	sigend = find_bin_string(p, mem->size, SIGEND, sizeof(SIGEND) - 1);
+	if (sigend == NULL) {
+		snprintf(cursor->why, sizeof(cursor->why),
+			"malformed armor - no end sig - at %zu",
+			(size_t)(p - mem->mem));
+		return 0;
+	}
 	binsigsize = b64decode((char *)p, (size_t)(sigend - p), binsig, sizeof(binsig));
 
 	read_binary_memory(cursor->pgp, "signature", cons_onepass, 15);

Reply via email to