*************************************************/
/* DMARC support.
Copyright (c) Todd Lyons <tlyons@exim.org> 2012 - 2014
- Copyright (c) The Exim Maintainers 2019
+ Copyright (c) The Exim Maintainers 2019 - 2021
License: GPL */
/* Portions Copyright (c) 2012, 2013, The Trusted Domain Project;
{ US"reject", DMARC_RECORD_P_REJECT },
{ NULL, 0 }
};
+
+
+gstring *
+dmarc_version_report(gstring * g)
+{
+return string_fmt_append(g, "Library version: dmarc: Compile: %d.%d.%d.%d\n",
+ (OPENDMARC_LIB_VERSION & 0xff000000) >> 24, (OPENDMARC_LIB_VERSION & 0x00ff0000) >> 16,
+ (OPENDMARC_LIB_VERSION & 0x0000ff00) >> 8, OPENDMARC_LIB_VERSION & 0x000000ff);
+}
+
+
/* Accept an error_block struct, initialize if empty, parse to the
- * end, and append the two strings passed to it. Used for adding
- * variable amounts of value:pair data to the forensic emails. */
+end, and append the two strings passed to it. Used for adding
+variable amounts of value:pair data to the forensic emails. */
static error_block *
add_to_eblock(error_block *eblock, uschar *t1, uschar *t2)
{
error_block *eb = store_malloc(sizeof(error_block));
-if (eblock == NULL)
+if (!eblock)
eblock = eb;
else
{
/* Find the end of the eblock struct and point it at eb */
error_block *tmp = eblock;
- while(tmp->next != NULL)
+ while(tmp->next)
tmp = tmp->next;
tmp->next = eb;
}
}
/* dmarc_init sets up a context that can be re-used for several
- messages on the same SMTP connection (that come from the
- same host with the same HELO string) */
+messages on the same SMTP connection (that come from the
+same host with the same HELO string) */
int
dmarc_init()
DEBUG(D_receive) debug_printf("DMARC history file not set\n");
return DMARC_HIST_DISABLED;
}
-history_file_fd = log_create(dmarc_history_file);
+history_file_fd = log_open_as_exim(dmarc_history_file);
if (history_file_fd < 0)
{
/* Can't use exim's string manipulation functions so allocate memory
for libopendmarc using its max hostname length definition. */
- dmarc_domain = store_get(DMARC_MAXHOSTNAMELEN, TRUE);
+ dmarc_domain = store_get(DMARC_MAXHOSTNAMELEN, GET_TAINTED);
libdm_status = opendmarc_policy_fetch_utilized_domain(dmarc_pctx,
dmarc_domain, DMARC_MAXHOSTNAMELEN-1);
store_release_above(dmarc_domain + Ustrlen(dmarc_domain)+1);