Only define variable "a" if we HAVE_LINUX_NETWORK
authorMatthias Andree <matthias.andree@gmx.de>
Wed, 21 May 2025 18:41:33 +0000 (20:41 +0200)
committerSimon Kelley <simon@thekelleys.org.uk>
Wed, 21 May 2025 18:48:39 +0000 (19:48 +0100)
Variable unsigned char a is defined unconditionally,
but it is only used if HAVE_LINUX_NETWORK is defined.
This triggers compiler warnings on, say, FreeBSD.

Fix by wrapping the definition in proper #ifdef.

src/dnsmasq.c

index ba5e459..bfdc913 100644 (file)
@@ -1939,11 +1939,14 @@ static void do_tcp_connection(struct listener *listener, time_t now, int slot)
   pid_t p;
   union mysockaddr tcp_addr;
   socklen_t tcp_len = sizeof(union mysockaddr);
-  unsigned char a = 0, *buff;
+  unsigned char *buff;
   struct server *s; 
   int flags, auth_dns;
   struct in_addr netmask;
   int pipefd[2];
+#ifdef HAVE_LINUX_NETWORK
+  unsigned char a = 0;
+#endif
 
   while ((confd = accept(listener->tcpfd, NULL, NULL)) == -1 && errno == EINTR);
   
@@ -2052,7 +2055,7 @@ static void do_tcp_connection(struct listener *listener, time_t now, int slot)
             single byte comes back up the pipe, which
             is sent by the child after it has closed the
             netlink socket. */
-         
+
          read_write(pipefd[0], &a, 1, RW_READ);
 #endif