Commit Diff


commit - 2732fb68df18039980a6fb4ff769296dda6c605b
commit + 62823db4a40d43e7a9df5f0cfe0a1301580f813a
blob - f8e59b6b29842962e6536b727ebe78b09faaf570
blob + 5b0f1e9883cc541964eb5819112b2995d118708d
--- main.c
+++ main.c
@@ -1211,7 +1211,7 @@ dkim_key_text_parse(struct signature *sig, const char 
 	const char *end, *tagvend, *b64;
 	char pkraw[UINT16_MAX] = "", pkimp[UINT16_MAX];
 	size_t pkrawlen = 0, pkoff, linelen, pklen;
-	int h = 0, k = 0, n = 0, s = 0, t = 0, first = 1, tmp;
+	int h = 0, k = 0, n = 0, p = 0, s = 0, t = 0, first = 1, tmp;
 	BIO *bio;
 
 	key = osmtpd_ltok_skip_fws(key, 1);
@@ -1303,8 +1303,9 @@ dkim_key_text_parse(struct signature *sig, const char 
 			key = end;
 			break;
 		case 'p':
-			if (pkrawlen != 0)	/* Duplicate tag */
+			if (p != 0)	/* Duplicate tag */
 				return 0;
+			p = 1;
 			tagvend = key;
 			while (1) {
 				b64 = osmtpd_ltok_skip_fws(tagvend, 1);
@@ -1389,7 +1390,7 @@ dkim_key_text_parse(struct signature *sig, const char 
 			return 0;
 	}
 
-	if (pkrawlen == 0)		/* Missing tag */
+	if (!p)					/* Missing tag */
 		return 0;
 	if (k == 0 && sig->ak != EVP_PKEY_RSA)	/* Default to RSA */
 		return 0;