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);