Patch-Source: https://src.fedoraproject.org/rpms/dnsmasq/blob/f36/f/0014-Fix-coverity-detected-issues-in-dnsmasq.c.patch (backport from upstream) -- From f476acbe3c2830e6ff0c50cc36d364a3f3f4fadb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Men=C5=A1=C3=ADk?= Date: Fri, 3 Sep 2021 22:45:29 +0200 Subject: [PATCH 14/15] Fix coverity detected issues in dnsmasq.c diff --git a/src/dnsmasq.c b/src/dnsmasq.c index 602daed..3e1bfe8 100644 --- a/src/dnsmasq.c +++ b/src/dnsmasq.c @@ -34,7 +34,6 @@ static void poll_resolv(int force, int do_reload, time_t now); int main (int argc, char **argv) { - int bind_fallback = 0; time_t now; struct sigaction sigact; struct iname *if_tmp; @@ -59,6 +58,8 @@ int main (int argc, char **argv) int did_bind = 0; struct server *serv; char *netlink_warn; +#else + int bind_fallback = 0; #endif #if defined(HAVE_DHCP) || defined(HAVE_DHCP6) struct dhcp_context *context; @@ -377,7 +378,7 @@ int main (int argc, char **argv) bindtodevice(bound_device, daemon->dhcpfd); did_bind = 1; } - if (daemon->enable_pxe && bound_device) + if (daemon->enable_pxe && bound_device && daemon->pxefd != -1) { bindtodevice(bound_device, daemon->pxefd); did_bind = 1; @@ -920,8 +921,10 @@ int main (int argc, char **argv) my_syslog(LOG_WARNING, _("warning: failed to change owner of %s: %s"), daemon->log_file, strerror(log_err)); +#ifndef HAVE_LINUX_NETWORK if (bind_fallback) my_syslog(LOG_WARNING, _("setting --bind-interfaces option because of OS limitations")); +#endif if (option_bool(OPT_NOWILD)) warn_bound_listeners(); @@ -1575,7 +1578,7 @@ static void async_event(int pipe, time_t now) { /* block in writes until all done */ if ((i = fcntl(daemon->helperfd, F_GETFL)) != -1) - fcntl(daemon->helperfd, F_SETFL, i & ~O_NONBLOCK); + while(retry_send(fcntl(daemon->helperfd, F_SETFL, i & ~O_NONBLOCK))); do { helper_write(); } while (!helper_buf_empty() || do_script_run(now)); @@ -1984,7 +1987,7 @@ static void check_dns_listeners(time_t now) attribute from the listening socket. Reset that here. */ if ((flags = fcntl(confd, F_GETFL, 0)) != -1) - fcntl(confd, F_SETFL, flags & ~O_NONBLOCK); + while(retry_send(fcntl(confd, F_SETFL, flags & ~O_NONBLOCK))); buff = tcp_request(confd, now, &tcp_addr, netmask, auth_dns); -- 2.31.1