From 3ebeaf58bcc20afc239abeb68057faaf9da5c357 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Fri, 25 Apr 2014 14:46:51 +0100 Subject: [PATCH] Fix pushing octets of lua_ip. --- src/lua/lua_ip.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/lua/lua_ip.c b/src/lua/lua_ip.c index 105a84120..f477e1d77 100644 --- a/src/lua/lua_ip.c +++ b/src/lua/lua_ip.c @@ -73,11 +73,13 @@ lua_ip_to_table (lua_State *L) lua_newtable (L); if (ip->addr.af == AF_INET) { max = 32 / 8; + ptr = (guint8 *)&ip->addr.addr.s4.sin_addr; } else { max = 128 / 8; + ptr = (guint8 *)&ip->addr.addr.s6.sin6_addr; } - ptr = (guint8 *)&ip->addr.addr.s6.sin6_addr; + for (i = 1; i <= max; i ++, ptr ++) { lua_pushnumber (L, *ptr); lua_rawseti (L, -2, i); @@ -101,12 +103,14 @@ lua_ip_str_octets (lua_State *L) if (ip != NULL && ip->is_valid) { lua_newtable (L); if (ip->addr.af == AF_INET) { + ptr = (guint8 *)&ip->addr.addr.s4.sin_addr; max = 32 / 8; } else { max = 128 / 8; + ptr = (guint8 *)&ip->addr.addr.s6.sin6_addr; } - ptr = (guint8 *)&ip->addr.addr.s6.sin6_addr; + for (i = 1; i <= max; i ++, ptr ++) { if (ip->addr.af == AF_INET) { rspamd_snprintf (numbuf, sizeof (numbuf), "%d", *ptr); @@ -142,11 +146,13 @@ lua_ip_inversed_str_octets (lua_State *L) lua_newtable (L); if (ip->addr.af == AF_INET) { max = 32 / 8; + ptr = (guint8 *)&ip->addr.addr.s4.sin_addr; } else { max = 128 / 8; + ptr = (guint8 *)&ip->addr.addr.s6.sin6_addr; } - ptr = (guint8 *)&ip->addr.addr.s6.sin6_addr; + ptr += max - 1; for (i = 1; i <= max; i ++, ptr --) { if (ip->addr.af == AF_INET) { -- 2.39.5