commit efee726e37306bb059161d0518e365b1efe0a85a from: Martijn van Duren date: Sun Mar 27 12:32:31 2022 UTC Fix calculating subdomain matching for i tag commit - f85da7301bab97460f5636a8e8da510df4a7a0ae commit + efee726e37306bb059161d0518e365b1efe0a85a blob - 4fe67bd413bf245ea27c234f845b3f3a87ce38c4 blob + 64c6e1f4d0a6c36ddc02b68175960d6942ee17d8 --- main.c +++ main.c @@ -482,7 +482,7 @@ dkim_signature_parse(struct header *header) if (sig->i != NULL) { i = osmtpd_ltok_skip_local_part(sig->i, 1) + 1; - ilen = strlen(i); + ilen = sig->isz - (size_t)(i - sig->i); dlen = strlen(sig->d); if (ilen < dlen) { dkim_signature_state(sig, DKIM_PERMERROR, @@ -490,9 +490,10 @@ dkim_signature_parse(struct header *header) return; } i += ilen - dlen; - if ((i[-1] != '.' && i[-1] != '@') || strcmp(i, sig->d) != 0) { + if ((i[-1] != '.' && i[-1] != '@') || + strncmp(i, sig->d, dlen) != 0) { dkim_signature_state(sig, DKIM_PERMERROR, - "i tagn not subdomain of d"); + "i tag not subdomain of d"); return; } }