summaryrefslogtreecommitdiffstats
path: root/src/plugins/spf.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/spf.c')
-rw-r--r--src/plugins/spf.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/plugins/spf.c b/src/plugins/spf.c
index d7b76e003..e51016429 100644
--- a/src/plugins/spf.c
+++ b/src/plugins/spf.c
@@ -374,16 +374,16 @@ spf_check_element (struct spf_resolved *rec, struct spf_addr *addr,
/* Compare the first bytes */
bmask = mask / CHAR_BIT;
- if (bmask > addrlen) {
+ if (mask > addrlen * CHAR_BIT) {
msg_info_task ("bad mask length: %d", mask);
}
else if (memcmp (s, d, bmask) == 0) {
-
- if (bmask * CHAR_BIT != mask) {
+ if (bmask * CHAR_BIT < mask) {
/* Compare the remaining bits */
s += bmask;
d += bmask;
mask = (0xff << (CHAR_BIT - (mask - bmask * 8))) & 0xff;
+
if ((*s & mask) == (*d & mask)) {
res = TRUE;
}