commit - b8958f33de58347189a0672e057e56638e8df03c
commit + 3082f0981a058b17619c641fe213801660fe5039
blob - 92593c4e4a5b7bd42f1f39ce64d39b327dc6b2fe
blob + 8f324e536ea02ba338e434de491b4f778535a399
--- main.c
+++ main.c
dkim_key_text_parse(struct signature *sig, const char *key)
{
char tagname, *hashname;
- const char *end, *tagvend, *b64;
+ const char *end, *tagvend;
char pkraw[UINT16_MAX] = "", pkimp[UINT16_MAX];
size_t pkrawlen = 0, pkoff, linelen;
int h = 0, k = 0, n = 0, p = 0, s = 0, t = 0, first = 1;
if (p != 0) /* Duplicate tag */
return 0;
p = 1;
- tagvend = key;
while (1) {
- b64 = osmtpd_ltok_skip_fws(tagvend, 1);
+ key = osmtpd_ltok_skip_fws(key, 1);
if (osmtpd_ltok_skip_alphadigitps(
- tagvend, 0) == NULL)
+ key, 0) == NULL)
break;
- pkraw[pkrawlen++] = tagvend++[0];
+ pkraw[pkrawlen++] = key++[0];
if (pkrawlen >= sizeof(pkraw))
return 0;
}
- if (tagvend[0] == '=') {
+ if (key[0] == '=') {
pkraw[pkrawlen++] = '=';
- tagvend = osmtpd_ltok_skip_fws(b64 + 1, 1);
+ key = osmtpd_ltok_skip_fws(key + 1, 1);
if (pkrawlen >= sizeof(pkraw))
return 0;
- if (tagvend[0] == '=') {
+ if (key[0] == '=') {
pkraw[pkrawlen++] = '=';
- tagvend++;
+ key++;
if (pkrawlen >= sizeof(pkraw))
return 0;
}
}
/* Invalid tag value */
- if (pkrawlen % 4 != 0 || tagvend != end)
+ if (pkrawlen % 4 != 0 || key != end)
return 0;
- key = end;
break;
case 's':
if (s != 0) /* Duplicate tag */