diff --git a/smmapdfw/verify_worker/verify_worker.c b/smmapdfw/verify_worker/verify_worker.c index 5907154..8f8cee7 100644 --- a/smmapdfw/verify_worker/verify_worker.c +++ b/smmapdfw/verify_worker/verify_worker.c @@ -733,6 +733,7 @@ static void *worker_thread(void *arg) { static const char *NOT_AN_ADDRESS = "not an email-address, no @ in it"; static const char *DEFAULT_ANSWER = "default answer"; static const char *NO_MX_AVAILABLE = "no MX available"; + static const char *ILLEGAL_MX_ADDRESS = "0.0.0.0 can not be used at all"; static const char *NO_PERM_RESULT = "no checker returned permanent result"; static const char *INTERNAL_ERROR = "verifier internal error"; @@ -767,6 +768,9 @@ static void *worker_thread(void *arg) { if (NULL == mx_ip_addresses) { wt->output = (char*) NO_MX_AVAILABLE; result = SMM_LOCAL_PERM_NOK; + } else if (0 == *mx_ip_addresses) { /* 0.0.0.0 is strange enough for a special case */ + wt->output = (char*) ILLEGAL_MX_ADDRESS; + result = SMM_LOCAL_PERM_NOK; } else { for (i = 0; (*(mx_ip_addresses+i) != 0) && (i < wt->vwh->vch->max_checker_threads); i++) { unsigned int address = *(mx_ip_addresses+i);