From 59c4dfa33b9f6aa6012ec6e958840de467afde08 Mon Sep 17 00:00:00 2001 From: Sergey Lyubka Date: Fri, 21 Jan 2022 12:24:58 +0000 Subject: [PATCH] Fix 1452 - byte order issue in mg_check_ip_acl --- mongoose.c | 2 +- src/util.c | 2 +- test/unit_test.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mongoose.c b/mongoose.c index 3886950f..98ddb7f5 100644 --- a/mongoose.c +++ b/mongoose.c @@ -4630,7 +4630,7 @@ int mg_check_ip_acl(struct mg_str acl, uint32_t remote_ip) { uint32_t net, mask; if (k.ptr[0] != '+' && k.ptr[0] != '-') return -1; if (parse_net(&k.ptr[1], &net, &mask) == 0) return -2; - if ((remote_ip & mask) == net) allowed = k.ptr[0]; + if ((mg_ntohl(remote_ip) & mask) == net) allowed = k.ptr[0]; } return allowed == '+'; } diff --git a/src/util.c b/src/util.c index 5f47815c..9d6ff65e 100644 --- a/src/util.c +++ b/src/util.c @@ -238,7 +238,7 @@ int mg_check_ip_acl(struct mg_str acl, uint32_t remote_ip) { uint32_t net, mask; if (k.ptr[0] != '+' && k.ptr[0] != '-') return -1; if (parse_net(&k.ptr[1], &net, &mask) == 0) return -2; - if ((remote_ip & mask) == net) allowed = k.ptr[0]; + if ((mg_ntohl(remote_ip) & mask) == net) allowed = k.ptr[0]; } return allowed == '+'; } diff --git a/test/unit_test.c b/test/unit_test.c index 482a81ce..53d06eb3 100644 --- a/test/unit_test.c +++ b/test/unit_test.c @@ -1539,7 +1539,7 @@ static void test_udp(void) { } static void test_check_ip_acl(void) { - uint32_t ip = 0x01020304; + uint32_t ip = mg_htonl(0x01020304); ASSERT(mg_check_ip_acl(mg_str(NULL), ip) == 1); ASSERT(mg_check_ip_acl(mg_str(""), ip) == 1); ASSERT(mg_check_ip_acl(mg_str("invalid"), ip) == -1);