openbsd-ports/mail/libspf2/patches/patch-src_libspf2_spf_request_c
okan 1031a7b791 import libspf2
libspf2 is an implementation of the Sender Policy Framework (SPF).

ok jakob@ merdely@
2008-01-30 15:58:49 +00:00

36 lines
1.2 KiB
Plaintext

$OpenBSD: patch-src_libspf2_spf_request_c,v 1.1.1.1 2008/01/30 15:58:50 okan Exp $
--- src/libspf2/spf_request.c.orig Mon Feb 21 21:38:57 2005
+++ src/libspf2/spf_request.c Thu Jan 24 23:06:21 2008
@@ -142,14 +142,19 @@ SPF_request_set_env_from(SPF_request_t *sr, const char
SPF_FREE(sr->env_from_lp);
SPF_FREE(sr->env_from_dp);
+ if (*from == '\0' && sr->helo_dom != NULL) {
+ from = sr->helo_dom;
+ }
cp = strrchr(from, '@');
if (cp && (cp != from)) {
sr->env_from = strdup(from);
- sr->env_from_lp = strdup(from); /* Too long, but simple */
- sr->env_from_lp[(cp - from)] = '\0';
+ *cp = '\0';
+ sr->env_from_lp = strdup(from);
sr->env_from_dp = strdup(cp + 1);
+ *cp = '@';
}
else {
+ if (cp == from) from++; /* "@domain.example" */
len = sizeof("postmaster@") + strlen(from);
sr->env_from = malloc(len + 1); /* sizeof("") == 1? */
sprintf(sr->env_from, "postmaster@%s", from);
@@ -306,6 +311,9 @@ SPF_request_query_rcptto(SPF_request_t *spf_request,
const char *rcpt_to_dom;
char *record;
size_t len;
+
+ if ( (spf_request == NULL) || (rcpt_to == NULL) )
+ return SPF_E_INVALID_OPT;
SPF_ASSERT_NOTNULL(spf_request);
spf_server = spf_request->spf_server;