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.