summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Hazel <ph10@hermes.cam.ac.uk>2005-01-11 15:51:02 +0000
committerPhilip Hazel <ph10@hermes.cam.ac.uk>2005-01-11 15:51:02 +0000
commita5a28604d8bf14b6521ed3ab028872b9cafd1b24 (patch)
tree9fa6f306b8a116ad84bc648f6f3a4e2fff48d6cd
parent4964e9326687129640fe06f61863e3ae24a43de9 (diff)
Corrected several mis-calls of is_ip_address() that treated the result
as a boolean instead of an int.
-rw-r--r--doc/doc-txt/ChangeLog7
-rw-r--r--src/src/exim.c6
-rw-r--r--src/src/host.c4
-rw-r--r--src/src/lookups/dnsdb.c4
-rw-r--r--src/src/lookups/lsearch.c6
-rw-r--r--src/src/route.c4
-rw-r--r--src/src/routers/dnslookup.c4
-rw-r--r--src/src/routers/ipliteral.c4
-rw-r--r--src/src/routers/rf_lookup_hostlist.c4
-rw-r--r--src/src/transports/smtp.c4
-rw-r--r--src/src/verify.c9
11 files changed, 31 insertions, 25 deletions
diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog
index 891a3e04e..483b87134 100644
--- a/doc/doc-txt/ChangeLog
+++ b/doc/doc-txt/ChangeLog
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.64 2005/01/04 16:36:27 ph10 Exp $
+$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.65 2005/01/11 15:51:02 ph10 Exp $
Change log file for Exim from version 4.21
-------------------------------------------
@@ -292,6 +292,11 @@ Exim version 4.50
66. Added hosts_max_try_hardlimit to the smtp transport, default 50.
+67. The string_is_ip_address() function returns 0, 4, or 6, for "no an IP
+ address", "IPv4 address", and "IPv6 address", respectively. Some calls of
+ the function were treating the return as a boolean value, which happened to
+ work because 0=false and not-0=true, but is not correct code.
+
Exim version 4.43
-----------------
diff --git a/src/src/exim.c b/src/src/exim.c
index 681a713f4..c38a58c54 100644
--- a/src/src/exim.c
+++ b/src/src/exim.c
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/exim.c,v 1.12 2005/01/04 10:00:42 ph10 Exp $ */
+/* $Cambridge: exim/src/src/exim.c,v 1.13 2005/01/11 15:51:02 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -599,7 +599,7 @@ static int
check_port(uschar *address)
{
int port = host_extract_port(address);
-if (!string_is_ip_address(address, NULL))
+if (string_is_ip_address(address, NULL) == 0)
{
fprintf(stderr, "exim abandoned: \"%s\" is not an IP address\n", address);
exit(EXIT_FAILURE);
@@ -622,7 +622,7 @@ Arguments:
flags flag bits for verify_address()
exit_value to be set for failures
-Returns: nothint
+Returns: nothing
*/
static void
diff --git a/src/src/host.c b/src/src/host.c
index 91ba467d3..609605563 100644
--- a/src/src/host.c
+++ b/src/src/host.c
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/host.c,v 1.5 2005/01/04 10:00:42 ph10 Exp $ */
+/* $Cambridge: exim/src/src/host.c,v 1.6 2005/01/11 15:51:02 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -493,7 +493,7 @@ ip_address_item *next;
while ((s = string_nextinlist(&list, &sep, buffer, sizeof(buffer))) != NULL)
{
int port = host_extract_port(s); /* Leaves just the IP address */
- if (!string_is_ip_address(s, NULL))
+ if (string_is_ip_address(s, NULL) == 0)
log_write(0, LOG_MAIN|LOG_PANIC_DIE, "Malformed IP address \"%s\" in %s",
s, name);
diff --git a/src/src/lookups/dnsdb.c b/src/src/lookups/dnsdb.c
index 7f42963a5..347adfb5e 100644
--- a/src/src/lookups/dnsdb.c
+++ b/src/src/lookups/dnsdb.c
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/lookups/dnsdb.c,v 1.8 2005/01/04 10:00:44 ph10 Exp $ */
+/* $Cambridge: exim/src/src/lookups/dnsdb.c,v 1.9 2005/01/11 15:51:03 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -236,7 +236,7 @@ while ((domain = string_nextinlist(&keystring, &sep, buffer, sizeof(buffer)))
records for different purposes where the key string is a host name). This
code for doing the reversal is now in a separate function. */
- if (type == T_PTR && string_is_ip_address(domain, NULL))
+ if (type == T_PTR && string_is_ip_address(domain, NULL) > 0)
{
dns_build_reverse(domain, rbuffer);
domain = rbuffer;
diff --git a/src/src/lookups/lsearch.c b/src/src/lookups/lsearch.c
index 2a143576c..f91ddf89c 100644
--- a/src/src/lookups/lsearch.c
+++ b/src/src/lookups/lsearch.c
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/lookups/lsearch.c,v 1.2 2005/01/04 10:00:44 ph10 Exp $ */
+/* $Cambridge: exim/src/src/lookups/lsearch.c,v 1.3 2005/01/11 15:51:03 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -213,7 +213,7 @@ for (last_was_eol = TRUE;
int maskoffset;
int save = buffer[linekeylength];
buffer[linekeylength] = 0;
- if (!string_is_ip_address(buffer, &maskoffset) ||
+ if (string_is_ip_address(buffer, &maskoffset) == 0 ||
!host_is_in_net(keystring, buffer, maskoffset)) continue;
buffer[linekeylength] = save;
}
@@ -369,7 +369,7 @@ iplsearch_find(void *handle, uschar *filename, uschar *keystring, int length,
{
do_cache = do_cache; /* Keep picky compilers happy */
if ((length == 1 && keystring[0] == '*') ||
- string_is_ip_address(keystring, NULL))
+ string_is_ip_address(keystring, NULL) > 0)
{
return internal_lsearch_find(handle, filename, keystring, length, result,
errmsg, LSEARCH_IP);
diff --git a/src/src/route.c b/src/src/route.c
index 781dce6e1..47d95332e 100644
--- a/src/src/route.c
+++ b/src/src/route.c
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/route.c,v 1.3 2005/01/04 10:00:42 ph10 Exp $ */
+/* $Cambridge: exim/src/src/route.c,v 1.4 2005/01/11 15:51:02 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -1854,7 +1854,7 @@ if (r->translate_ip_address != NULL)
DEBUG(D_route) debug_printf("%s [%s] translated to %s\n",
h->name, h->address, newaddress);
- if (string_is_ip_address(newaddress, NULL))
+ if (string_is_ip_address(newaddress, NULL) > 0)
{
h->address = newaddress;
continue;
diff --git a/src/src/routers/dnslookup.c b/src/src/routers/dnslookup.c
index 1eb215412..b5ef0478b 100644
--- a/src/src/routers/dnslookup.c
+++ b/src/src/routers/dnslookup.c
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/routers/dnslookup.c,v 1.2 2005/01/04 10:00:44 ph10 Exp $ */
+/* $Cambridge: exim/src/src/routers/dnslookup.c,v 1.3 2005/01/11 15:51:03 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -305,7 +305,7 @@ for (;;)
else
{
addr->message = US"all relevant MX records point to non-existent hosts";
- if (!allow_mx_to_ip && string_is_ip_address(h.name, NULL))
+ if (!allow_mx_to_ip && string_is_ip_address(h.name, NULL) > 0)
{
addr->user_message =
string_sprintf("It appears that the DNS operator for %s\n"
diff --git a/src/src/routers/ipliteral.c b/src/src/routers/ipliteral.c
index 11bdc6e08..b091c4e61 100644
--- a/src/src/routers/ipliteral.c
+++ b/src/src/routers/ipliteral.c
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/routers/ipliteral.c,v 1.3 2005/01/04 10:00:44 ph10 Exp $ */
+/* $Cambridge: exim/src/src/routers/ipliteral.c,v 1.4 2005/01/11 15:51:03 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -118,7 +118,7 @@ host name to "(unnamed)". */
if (domain[0] != '[' || domain[len-1] != ']') return DECLINE;
domain[len-1] = 0; /* temporarily */
-if (!string_is_ip_address(domain+1, NULL))
+if (string_is_ip_address(domain+1, NULL) == 0)
{
domain[len-1] = ']';
return DECLINE;
diff --git a/src/src/routers/rf_lookup_hostlist.c b/src/src/routers/rf_lookup_hostlist.c
index d7d19b5f8..5646315cb 100644
--- a/src/src/routers/rf_lookup_hostlist.c
+++ b/src/src/routers/rf_lookup_hostlist.c
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/routers/rf_lookup_hostlist.c,v 1.2 2005/01/04 10:00:44 ph10 Exp $ */
+/* $Cambridge: exim/src/src/routers/rf_lookup_hostlist.c,v 1.3 2005/01/11 15:51:03 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -92,7 +92,7 @@ for (h = addr->host_list; h != NULL; prev = h, h = next_h)
/* If explicitly configured to look up by name, or if the "host name" is
actually an IP address, do a byname lookup. */
- else if (lookup_type == lk_byname || string_is_ip_address(h->name, NULL))
+ else if (lookup_type == lk_byname || string_is_ip_address(h->name, NULL) > 0)
{
DEBUG(D_route|D_host_lookup) debug_printf("calling host_find_byname\n");
rc = host_find_byname(h, ignore_target_hosts, &canonical_name, TRUE);
diff --git a/src/src/transports/smtp.c b/src/src/transports/smtp.c
index 738fd1cc2..a756f81db 100644
--- a/src/src/transports/smtp.c
+++ b/src/src/transports/smtp.c
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/transports/smtp.c,v 1.4 2005/01/04 16:36:28 ph10 Exp $ */
+/* $Cambridge: exim/src/src/transports/smtp.c,v 1.5 2005/01/11 15:51:03 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -2177,7 +2177,7 @@ for (cutoff_retry = 0; expired &&
/* Find by name if so configured, or if it's an IP address. We don't
just copy the IP address, because we need the test-for-local to happen. */
- if (ob->gethostbyname || string_is_ip_address(host->name, NULL))
+ if (ob->gethostbyname || string_is_ip_address(host->name, NULL) > 0)
rc = host_find_byname(host, NULL, &canonical_name, TRUE);
else
{
diff --git a/src/src/verify.c b/src/src/verify.c
index b3712c406..591c6c03d 100644
--- a/src/src/verify.c
+++ b/src/src/verify.c
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/verify.c,v 1.9 2005/01/04 10:00:42 ph10 Exp $ */
+/* $Cambridge: exim/src/src/verify.c,v 1.10 2005/01/11 15:51:02 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -1049,7 +1049,8 @@ while (addr_new != NULL)
for (host = host_list; host != NULL; host = nexthost)
{
nexthost = host->next;
- if (tf.gethostbyname || string_is_ip_address(host->name, NULL))
+ if (tf.gethostbyname ||
+ string_is_ip_address(host->name, NULL) > 0)
(void)host_find_byname(host, NULL, &canonical_name, TRUE);
else
{
@@ -1830,7 +1831,7 @@ if (*ss == '@')
/* If the pattern is an IP address, optionally followed by a bitmask count, do
a (possibly masked) comparision with the current IP address. */
-if (string_is_ip_address(ss, &maskoffset))
+if (string_is_ip_address(ss, &maskoffset) > 0)
return (host_is_in_net(cb->host_address, ss, maskoffset)? OK : FAIL);
/* If the item is of the form net[n]-lookup;<file|query> then it is a lookup on
@@ -2600,7 +2601,7 @@ while ((domain = string_nextinlist(&list, &sep, buffer, sizeof(buffer))) != NULL
while ((keydomain = string_nextinlist(&key, &keysep, keybuffer,
sizeof(keybuffer))) != NULL)
{
- if (string_is_ip_address(keydomain, NULL))
+ if (string_is_ip_address(keydomain, NULL) > 0)
{
uschar keyrevadd[128];
invert_address(keyrevadd, keydomain);