commit - e460eef30231db889b0e8538e92f00a1efa0f191
commit + 36daa2d4bbadd128a286caf4ecdf800c45c65aa3
blob - 26c5f7a1bd0c765e5993e9fbaec66af7277add29
blob + 9b1b427984b0c93f53dfc1b7c504a78863566cdd
--- main.c
+++ main.c
void dkim_message_verify(struct message *);
ssize_t dkim_ar_cat(char **ar, size_t *n, size_t aroff, const char *fmt, ...)
__attribute__((__format__ (printf, 4, 5)));
-void dkim_ar_print(struct osmtpd_ctx *, const char *);
+int dkim_ar_print(struct osmtpd_ctx *, const char *);
int dkim_key_text_parse(struct signature *, const char *);
char *authservid;
goto fail;
}
}
- dkim_ar_print(msg->ctx, line);
+ if (dkim_ar_print(msg->ctx, line) != 0) {
+ dkim_err(msg, "Mallformed AR header");
+ goto fail;
+ }
rewind(msg->origf);
while ((n = getline(&line, &linelen, msg->origf)) != -1) {
return;
}
-void
+int
dkim_ar_print(struct osmtpd_ctx *ctx, const char *start)
{
const char *scan, *checkpoint, *ncheckpoint;
arlen, start);
start = osmtpd_ltok_skip_cfws(checkpoint, 1);
if (*start == '\0')
- return;
+ return 0;
ncheckpoint = start;
scan = start;
arlen = 8;
}
if (ncheckpoint == NULL)
- osmtpd_errx(1, "Invalid AR line: |%s", scan);
+ return -1;
if (*ncheckpoint == ';')
ncheckpoint++;
}
}
osmtpd_filter_dataline(ctx, "%s%s", first ? "" : "\t", start);
+ return 0;
}
ssize_t