wargio / naxsi

NAXSI is an open-source, high performance, low rules maintenance WAF for NGINX

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GCC bug # 53119 (missing braces around initializer [-Werror=missing-braces])

lubomudr opened this issue · comments

When I compile the code i get error

make[1]: Entering directory `/home/lubomudr/nginx'
cc -c -fPIC -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -std=c99 -I src/core -I src/event -I src/event/modules -I src/os/unix -I ../naxsi/naxsi_src/ -I ../openssl-1.1.1/.openssl/include -I objs -I src/http -I src/http/modules -I src/http/v2 -I src/mail -I src/stream \
        -o objs/addon/naxsi_src/naxsi_net.o \
        ../naxsi/naxsi_src/naxsi_net.c
../naxsi/naxsi_src/naxsi_net.c: In function 'naxsi_parse_cidr':
../naxsi/naxsi_src/naxsi_net.c:93:3: error: missing braces around initializer [-Werror=missing-braces]
   ip_t   ip       = { 0 };
   ^
../naxsi/naxsi_src/naxsi_net.c:93:3: error: (near initialization for 'ip.u') [-Werror=missing-braces]
../naxsi/naxsi_src/naxsi_net.c:93:3: error: missing initializer for field 'version' of 'ip_t' [-Werror=missing-field-initializers]
In file included from ../naxsi/naxsi_src/naxsi.h:17:0,
                 from ../naxsi/naxsi_src/naxsi_net.c:7:
../naxsi/naxsi_src/naxsi_net.h:44:12: note: 'version' declared here
   uint32_t version;
            ^
cc1: all warnings being treated as errors
make[1]: *** [objs/addon/naxsi_src/naxsi_net.o] Error 1
make[1]: Leaving directory `/home/lubomudr/nginx'
make: *** [build] Error 2

gcc version 4.8.5 20150623 (Red Hat 4.8.5-44)

to fix, can leave the values ​​uninitialized or initialize a known member

diff --git a/naxsi_src/naxsi_net.c b/naxsi_src/naxsi_net.c
index d7da800..1d16a18 100644
--- a/naxsi_src/naxsi_net.c
+++ b/naxsi_src/naxsi_net.c
@@ -90,7 +90,7 @@ naxsi_parse_cidr(const ngx_str_t* nx_cidr, cidr_t* cidr)
     return (CIDR_ERROR_MISSING_MASK);
   }
 
-  ip_t   ip       = { 0 };
+  ip_t   ip       = { .version = 0 };
   size_t orig_len = copy.len;
 
   copy.len = smask - (const char*)copy.data;
diff --git a/naxsi_src/naxsi_runtime.c b/naxsi_src/naxsi_runtime.c
index ffd445b..2e3fcda 100644
--- a/naxsi_src/naxsi_runtime.c
+++ b/naxsi_src/naxsi_runtime.c
@@ -573,7 +573,7 @@ naxsi_can_ignore_cidr(const ngx_str_t* ipstr, ngx_http_naxsi_loc_conf_t* cf)
     return 0;
   }
   ngx_uint_t i;
-  ip_t       ip = { 0 };
+  ip_t       ip = { .version = 0 };
   if (!naxsi_parse_ip(ipstr, &ip, NULL)) {
     return 0;
   }
diff --git a/naxsi_src/naxsi_skeleton.c b/naxsi_src/naxsi_skeleton.c
index 03c93c0..e1bda34 100644
--- a/naxsi_src/naxsi_skeleton.c
+++ b/naxsi_src/naxsi_skeleton.c
@@ -858,7 +858,7 @@ ngx_http_naxsi_read_conf(ngx_conf_t* cf, ngx_command_t* cmd, void* conf)
       return (NGX_CONF_OK); /* LCOV_EXCL_LINE */
     }
 
-    cidr_t cidr = { 0 };
+    cidr_t cidr = { .mask.version = 0 };
     int    err  = naxsi_parse_cidr(&value[1], &cidr);
     switch (err) {
       case CIDR_OK:

that is a very old version of gcc.

i guess i can just do a memset and remove the initializers

It's default GCC version for RedHat7/CentOS7

Try to rebuild the main branch. it should be fixed.