Skip to content

Commit 9365126

Browse files
committed
Fix gcc-15 caveat: {0} initializer in C or C++ for unions no longer guarantees clearing of the whole union (except for static storage duration initialization), it just initializes the first union member to zero.
Signed-off-by: Dominik <[email protected]>
1 parent 69929b0 commit 9365126

3 files changed

Lines changed: 13 additions & 13 deletions

File tree

src/dnsmasq_interface.c

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,10 @@ static struct {
9797
char name[IFNAMSIZ];
9898
union all_addr addr4;
9999
union all_addr addr6;
100-
} next_iface = {false, false, "", {{ 0 }}, {{ 0 }}};
100+
} next_iface = {false, false, "", {}, {}};
101101

102102
// Fork-private copy of the server data the most recent reply came from
103-
static union mysockaddr last_server = {{ 0 }};
103+
static union mysockaddr last_server = {};
104104

105105
const char *flagnames[] = {"F_IMMORTAL ", "F_NAMEP ", "F_REVERSE ", "F_FORWARD ", "F_DHCP ", "F_NEG ", "F_HOSTS ", "F_IPV4 ", "F_IPV6 ", "F_BIGNAME ", "F_NXDOMAIN ", "F_CNAME ", "F_DNSKEY ", "F_CONFIG ", "F_DS ", "F_DNSSECOK ", "F_UPSTREAM ", "F_RRNAME ", "F_SERVER ", "F_QUERY ", "F_NOERR ", "F_AUTH ", "F_DNSSEC ", "F_KEYTAG ", "F_SECSTAT ", "F_NO_RR ", "F_IPSET ", "F_NOEXTRA ", "F_DOMAINSRV", "F_RCODE", "F_RR", "F_STALE" };
106106

@@ -296,7 +296,7 @@ size_t _FTL_make_answer(struct dns_header *header, char *limit, const size_t len
296296

297297
// Check for regex redirecting
298298
bool redirecting = false;
299-
union all_addr redirect_addr4 = {{ 0 }}, redirect_addr6 = {{ 0 }};
299+
union all_addr redirect_addr4 = {}, redirect_addr6 = {};
300300
if(last_regex_idx > -1)
301301
{
302302
redirecting = regex_get_redirect(last_regex_idx, &redirect_addr4.addr4, &redirect_addr6.addr6);
@@ -463,7 +463,7 @@ size_t _FTL_make_answer(struct dns_header *header, char *limit, const size_t len
463463
// Add A answer record if requested
464464
if(flags & F_IPV4)
465465
{
466-
union all_addr addr = {{ 0 }};
466+
union all_addr addr = {};
467467

468468
// Overwrite with IP address if requested
469469
if(redirecting)
@@ -511,7 +511,7 @@ size_t _FTL_make_answer(struct dns_header *header, char *limit, const size_t len
511511
// Add AAAA answer record if requested
512512
if(flags & F_IPV6)
513513
{
514-
union all_addr addr = {{ 0 }};
514+
union all_addr addr = {};
515515

516516
// Overwrite with IP address if requested
517517
if(redirecting)
@@ -561,7 +561,7 @@ size_t _FTL_make_answer(struct dns_header *header, char *limit, const size_t len
561561
if(flags == 0)
562562
{
563563
// REFUSED
564-
union all_addr addr = {{ 0 }};
564+
union all_addr addr = {};
565565
addr.log.rcode = REFUSED;
566566
addr.log.ede = EDE_BLOCKED;
567567
log_query(F_RCODE | F_HOSTS, name, &addr, (char*)blockingreason, 0);
@@ -1214,7 +1214,7 @@ static void check_pihole_PTR(char *domain)
12141214
}
12151215

12161216
// Convert PTR request into numeric form
1217-
union all_addr addr = {{ 0 }};
1217+
union all_addr addr = {};
12181218
const int flags = in_arpa_name_2_addr(domain, &addr);
12191219

12201220
// Check if this is a valid in-addr.arpa (IPv4) or ip6.[int|arpa] (IPv6)
@@ -3662,11 +3662,11 @@ void FTL_TCP_worker_created(const int confd)
36623662
{
36633663
// Get peer IP address (client)
36643664
char peer_ip[ADDRSTRLEN] = { 0 };
3665-
union mysockaddr peer_sockaddr = {{ 0 }};
3665+
union mysockaddr peer_sockaddr = {};
36663666
socklen_t peer_len = sizeof(union mysockaddr);
36673667
if (getpeername(confd, (struct sockaddr *)&peer_sockaddr, &peer_len) != -1)
36683668
{
3669-
union all_addr peer_addr = {{ 0 }};
3669+
union all_addr peer_addr = {};
36703670
if (peer_sockaddr.sa.sa_family == AF_INET6)
36713671
peer_addr.addr6 = peer_sockaddr.in6.sin6_addr;
36723672
else
@@ -3676,11 +3676,11 @@ void FTL_TCP_worker_created(const int confd)
36763676

36773677
// Get local IP address (interface)
36783678
char local_ip[ADDRSTRLEN] = { 0 };
3679-
union mysockaddr iface_sockaddr = {{ 0 }};
3679+
union mysockaddr iface_sockaddr = {};
36803680
socklen_t iface_len = sizeof(union mysockaddr);
36813681
if(getsockname(confd, (struct sockaddr *)&iface_sockaddr, &iface_len) != -1)
36823682
{
3683-
union all_addr iface_addr = {{ 0 }};
3683+
union all_addr iface_addr = {};
36843684
if (iface_sockaddr.sa.sa_family == AF_INET6)
36853685
iface_addr.addr6 = iface_sockaddr.in6.sin6_addr;
36863686
else

src/edns0.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ void FTL_parse_pseudoheaders(unsigned char *pheader, const size_t plen)
222222
// +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
223223
// 8: | ADDRESS... /
224224
// +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
225-
union all_addr addr = {{ 0 }};
225+
union all_addr addr = {};
226226
const size_t addrlen = optlen - 4;
227227
if(family == 1 && addrlen <= sizeof(addr.addr4.s_addr)) // IPv4
228228
memcpy(&addr.addr4.s_addr, p, addrlen);

src/regex.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,7 @@ static int match_regex(const char *input, DNSCacheData *dns_cache, const int cli
372372
{
373373
int match_idx = -1;
374374
#ifdef USE_TRE_REGEX
375-
regmatch_t match[1] = {{ 0 }}; // This also disables any sub-matching
375+
regmatch_t match[1] = {}; // This also disables any sub-matching
376376
#endif
377377

378378
// Check if we need to recompile regex because they were changed in

0 commit comments

Comments
 (0)