summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPhil Pennock <pdp@exim.org>2012-05-18 15:52:08 -0400
committerPhil Pennock <pdp@exim.org>2012-05-18 15:52:08 -0400
commit542bc632dd2ab452f87e0304e3356534e49f71f3 (patch)
tree607349b50b0c2d6aa5ffdb146f9f2de5c107900c /src
parent7390e768d82239b8dc6697379277c37c8c927b9d (diff)
Second SPF fix, moved to where type is correct.
De-initialised "type" var in stack declaration, so a repeat of this mistake would lead to an uninitialized variable usage warning which would have blocked the previous incorrect fix from being committed.
Diffstat (limited to 'src')
-rw-r--r--src/src/lookups/dnsdb.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/src/src/lookups/dnsdb.c b/src/src/lookups/dnsdb.c
index be090cf78..0bbc86a56 100644
--- a/src/src/lookups/dnsdb.c
+++ b/src/src/lookups/dnsdb.c
@@ -122,7 +122,7 @@ int size = 256;
int ptr = 0;
int sep = 0;
int defer_mode = PASS;
-int type = T_TXT;
+int type;
int failrc = FAIL;
uschar *outsep = US"\n";
uschar *outsep2 = NULL;
@@ -164,14 +164,6 @@ if (*keystring == '>')
while (isspace(*keystring)) keystring++;
}
-/* SPF strings should be concatenated without a separator, thus make
-it the default if not defined (see RFC 4408 section 3.1.3).
-Multiple SPF records are forbidden (section 3.1.2) but are currently
-not handled specially, thus they are concatenated with \n by default. */
-
-if (type == T_SPF && outsep2 == NULL)
- outsep2 = US"";
-
/* Check for a defer behaviour keyword. */
if (strncmpic(keystring, US"defer_", 6) == 0)
@@ -206,8 +198,10 @@ if (strncmpic(keystring, US"defer_", 6) == 0)
while (isspace(*keystring)) keystring++;
}
-/* If the keystring contains an = this must be preceded by a valid type name. */
+/* Figure out the "type" value if it is not T_TXT.
+If the keystring contains an = this must be preceded by a valid type name. */
+type = T_TXT;
if ((equals = Ustrchr(keystring, '=')) != NULL)
{
int i, len;
@@ -255,6 +249,14 @@ if (type == T_PTR && keystring[0] != '<' &&
string_is_ip_address(keystring, NULL) != 0)
sep = -1;
+/* SPF strings should be concatenated without a separator, thus make
+it the default if not defined (see RFC 4408 section 3.1.3).
+Multiple SPF records are forbidden (section 3.1.2) but are currently
+not handled specially, thus they are concatenated with \n by default. */
+
+if (type == T_SPF && outsep2 == NULL)
+ outsep2 = US"";
+
/* Now scan the list and do a lookup for each item */
while ((domain = string_nextinlist(&keystring, &sep, buffer, sizeof(buffer)))