Module Name: src
Committed By: agc
Date: Mon Nov 15 08:27:40 UTC 2010
Modified Files:
src/crypto/external/bsd/netpgp/dist/src/lib: netpgp.c
Log Message:
Use a regular expression to match the various ASCII-armoured headers we
may encounter - fixes PR 44074 from Peter Pentchev in a different way.
To generate a diff of this commit:
cvs rdiff -u -r1.83 -r1.84 \
src/crypto/external/bsd/netpgp/dist/src/lib/netpgp.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/lib/netpgp.c
diff -u src/crypto/external/bsd/netpgp/dist/src/lib/netpgp.c:1.83 src/crypto/external/bsd/netpgp/dist/src/lib/netpgp.c:1.84
--- src/crypto/external/bsd/netpgp/dist/src/lib/netpgp.c:1.83 Mon Nov 15 08:03:39 2010
+++ src/crypto/external/bsd/netpgp/dist/src/lib/netpgp.c Mon Nov 15 08:27:40 2010
@@ -34,7 +34,7 @@
#if defined(__NetBSD__)
__COPYRIGHT("@(#) Copyright (c) 2009 The NetBSD Foundation, Inc. All rights reserved.");
-__RCSID("$NetBSD: netpgp.c,v 1.83 2010/11/15 08:03:39 agc Exp $");
+__RCSID("$NetBSD: netpgp.c,v 1.84 2010/11/15 08:27:40 agc Exp $");
#endif
#include <sys/types.h>
@@ -462,23 +462,32 @@
static unsigned
isarmoured(pgp_io_t *io, const char *f, const void *memory, const char *text)
{
+ regmatch_t matches[10];
unsigned armoured;
+ regex_t r;
FILE *fp;
char buf[BUFSIZ];
armoured = 0;
+ (void) regcomp(&r, text, REG_EXTENDED);
if (f) {
if ((fp = fopen(f, "r")) == NULL) {
(void) fprintf(io->errs, "isarmoured: can't open '%s'\n", f);
+ regfree(&r);
return 0;
}
if (fgets(buf, (int)sizeof(buf), fp) != NULL) {
- armoured = (strncmp(buf, text, strlen(text)) == 0);
+ if (regexec(&r, buf, 10, matches, 0) == 0) {
+ armoured = 1;
+ }
}
(void) fclose(fp);
} else {
- armoured = (strncmp(memory, text, strlen(text)) == 0);
+ if (regexec(&r, memory, 10, matches, 0) == 0) {
+ armoured = 1;
+ }
}
+ regfree(&r);
return armoured;
}
@@ -1341,7 +1350,7 @@
return ret;
}
-#define ARMOR_SIG_HEAD "-----BEGIN PGP SIGNATURE-----\r\n"
+#define ARMOR_SIG_HEAD "-----BEGIN PGP (SIGNATURE|SIGNED MESSAGE)-----"
/* verify a file */
int