aboutsummaryrefslogtreecommitdiffstats
path: root/src/libmime
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2019-09-28 13:37:22 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2019-09-28 13:37:22 +0100
commit04127efebacaaa088668198cdbe52f933367b731 (patch)
tree5e19bd17ac25d675666f53b19f746681a57e89da /src/libmime
parent8e5517a62b981fedc9e42d1323b066fadf086f1a (diff)
downloadrspamd-04127efebacaaa088668198cdbe52f933367b731.tar.gz
rspamd-04127efebacaaa088668198cdbe52f933367b731.zip
[Fix] Distinguish remote and local addrs parsing
Diffstat (limited to 'src/libmime')
-rw-r--r--src/libmime/message.c3
-rw-r--r--src/libmime/mime_headers.c17
2 files changed, 14 insertions, 6 deletions
diff --git a/src/libmime/message.c b/src/libmime/message.c
index 9e9d27d8a..4169ca0b5 100644
--- a/src/libmime/message.c
+++ b/src/libmime/message.c
@@ -1287,7 +1287,8 @@ rspamd_message_parse (struct rspamd_task *task)
if (recv->real_ip) {
if (!rspamd_parse_inet_address (&task->from_addr,
recv->real_ip,
- strlen (recv->real_ip))) {
+ strlen (recv->real_ip),
+ RSPAMD_INET_ADDRESS_PARSE_NO_UNIX)) {
msg_warn_task ("cannot get IP from received header: '%s'",
recv->real_ip);
task->from_addr = NULL;
diff --git a/src/libmime/mime_headers.c b/src/libmime/mime_headers.c
index a93a4ffd0..e83debc43 100644
--- a/src/libmime/mime_headers.c
+++ b/src/libmime/mime_headers.c
@@ -32,6 +32,9 @@ struct rspamd_mime_headers_table {
ref_entry_t ref;
};
+#define RSPAMD_INET_ADDRESS_PARSE_RECEIVED \
+ (RSPAMD_INET_ADDRESS_PARSE_REMOTE|RSPAMD_INET_ADDRESS_PARSE_NO_UNIX)
+
static void
rspamd_mime_header_check_special (struct rspamd_task *task,
struct rspamd_mime_header *rh)
@@ -1320,7 +1323,8 @@ rspamd_smtp_received_process_host_tcpinfo (struct rspamd_task *task,
if (brace_pos) {
addr = rspamd_parse_inet_address_pool (data + 1,
brace_pos - data - 1,
- task->task_pool);
+ task->task_pool,
+ RSPAMD_INET_ADDRESS_PARSE_RECEIVED);
if (addr) {
rh->addr = addr;
@@ -1334,7 +1338,7 @@ rspamd_smtp_received_process_host_tcpinfo (struct rspamd_task *task,
if (g_ascii_isxdigit (data[0])) {
/* Try to parse IP address */
addr = rspamd_parse_inet_address_pool (data,
- len, task->task_pool);
+ len, task->task_pool, RSPAMD_INET_ADDRESS_PARSE_RECEIVED);
if (addr) {
rh->addr = addr;
rh->real_ip = rspamd_mempool_strdup (task->task_pool,
@@ -1355,7 +1359,8 @@ rspamd_smtp_received_process_host_tcpinfo (struct rspamd_task *task,
if (ebrace_pos) {
addr = rspamd_parse_inet_address_pool (obrace_pos + 1,
ebrace_pos - obrace_pos - 1,
- task->task_pool);
+ task->task_pool,
+ RSPAMD_INET_ADDRESS_PARSE_RECEIVED);
if (addr) {
rh->addr = addr;
@@ -1420,7 +1425,8 @@ rspamd_smtp_received_process_from (struct rspamd_task *task,
if (brace_pos) {
addr = rspamd_parse_inet_address_pool (rpart->data + 1,
brace_pos - rpart->data - 1,
- task->task_pool);
+ task->task_pool,
+ RSPAMD_INET_ADDRESS_PARSE_RECEIVED);
if (addr) {
seen_ip_in_data = TRUE;
@@ -1434,7 +1440,8 @@ rspamd_smtp_received_process_from (struct rspamd_task *task,
/* Try to parse IP address */
rspamd_inet_addr_t *addr;
addr = rspamd_parse_inet_address_pool (rpart->data,
- rpart->dlen, task->task_pool);
+ rpart->dlen, task->task_pool,
+ RSPAMD_INET_ADDRESS_PARSE_RECEIVED);
if (addr) {
seen_ip_in_data = TRUE;
rh->addr = addr;