dhcpd: Exit on an error in signal_handler 41/266841/1 submit/tizen_6.5/20211125.005926
authorcheoleun moon <chleun.moon@samsung.com>
Fri, 19 Nov 2021 08:19:23 +0000 (17:19 +0900)
committercheoleun moon <chleun.moon@samsung.com>
Fri, 19 Nov 2021 08:47:38 +0000 (17:47 +0900)
Change-Id: I59ad3a67d7591b24e806d9a5cecc895bfbe9a881

toys/pending/dhcpd.c

index d9ca7f0..e30c249 100644 (file)
@@ -27,7 +27,7 @@ config DEBUG_DHCP
 
 /*
  * Things to do
- * 
+ *
  * - Working as an relay agent
  * - Rapid commit option support
  * - Additional packet options (commented on the middle of sources)
@@ -37,7 +37,7 @@ config DEBUG_DHCP
 #define FOR_dhcpd
 
 #include "toys.h"
-#include <linux/sockios.h> 
+#include <linux/sockios.h>
 #include <linux/if_ether.h>
 
 // Todo: headers not in posix
@@ -46,11 +46,7 @@ config DEBUG_DHCP
 #include <netinet/udp.h>
 #include <netpacket/packet.h>
 
-#if CFG_DEBUG_DHCP==1
 # define dbg(fmt, arg...)   printf(fmt, ##arg)
-#else
-# define dbg(fmt, arg...)
-#endif
 
 #define flag_get(f,v,d)     ((toys.optflags & (f)) ? (v) : (d))
 #define flag_chk(f)         ((toys.optflags & (f)) ? 1 : 0)
@@ -497,7 +493,10 @@ static void write_pid(char *path)
 static void signal_handler(int sig)
 {
   unsigned char ch = sig;
-  if (write(sigfd.wr, &ch, 1) != 1) dbg("can't send signal\n");
+  if (write(sigfd.wr, &ch, 1) != 1) {
+         dbg("can't send signal\n");
+         exit(0);
+  }
 }
 
 // signal setup for SIGUSR1 SIGTERM
@@ -1334,7 +1333,7 @@ static int verifyip6_in_lease(uint32_t *nip6, uint8_t *duid, uint16_t ia_type, u
       return -1;
 
     if (!memcmp(((dyn_lease6*) listdls->arg)->duid, duid, ((dyn_lease6*) listdls->arg)->duid_len)
-        && ((dyn_lease6*) listdls->arg)->ia_type == ia_type) 
+        && ((dyn_lease6*) listdls->arg)->ia_type == ia_type)
       return -1;
   }
   for (sls6 = gstate.leases.sleases6; sls6; sls6 = sls6->next)
@@ -1424,7 +1423,7 @@ static int addip6_to_lease(uint32_t *assigned_nip, uint8_t *duid, uint16_t ia_ty
   dls6->ia_type = ia_type;
   dls6->iaid = iaid;
   memcpy(dls6->lease_nip6, assigned_nip, sizeof(uint32_t)*4);
-  
+
   if (update) *lifetime = get_lease(*lifetime + now);
   dls6->expires = *lifetime + now;
 
@@ -1717,7 +1716,7 @@ void dhcpd_main(void)
       dbg("Error in select wait again...\n");
       continue;
     }
-    if (!retval) { // Timed out 
+    if (!retval) { // Timed out
       dbg("select wait Timed Out...\n");
       waited = 0;
       (addr_version==AF_INET6)? write_lease6file() : write_leasefile();
@@ -1730,7 +1729,7 @@ void dhcpd_main(void)
       } else gconfig.server_nip = htonl(gconfig.server_nip);
       continue;
     }
-    if (FD_ISSET(sigfd.rd, &rfds)) { // Some Activity on RDFDs : is signal 
+    if (FD_ISSET(sigfd.rd, &rfds)) { // Some Activity on RDFDs : is signal
       unsigned char sig;
       if (read(sigfd.rd, &sig, 1) != 1) {
         dbg("signal read failed.\n");
@@ -1774,7 +1773,7 @@ void dhcpd_main(void)
           dbg("no or bad message type option, ignoring packet.\n");
           continue;
         }
-        if (!gstate.rcvd.rcvd_pkt6.transaction_id || 
+        if (!gstate.rcvd.rcvd_pkt6.transaction_id ||
             memcmp(gstate.rcvd.rcvd_pkt6.transaction_id, transactionid, 3)) {
           dbg("no or bad transaction id, ignoring packet.\n");
           continue;
@@ -2002,7 +2001,7 @@ void dhcpd_main(void)
             dbg("Message Type : %u\n", gstate.rqcode);
             break;
         }
-        
+
       } else {
         if(read_packet() < 0) {
           open_listensock();
@@ -2012,7 +2011,7 @@ void dhcpd_main(void)
 
         get_optval((uint8_t*)&gstate.rcvd.rcvd_pkt.options,
             DHCP_OPT_MESSAGE_TYPE, &gstate.rqcode);
-        if (gstate.rqcode == 0 || gstate.rqcode < DHCPDISCOVER 
+        if (gstate.rqcode == 0 || gstate.rqcode < DHCPDISCOVER
             || gstate.rqcode > DHCPINFORM) {
           dbg("no or bad message type option, ignoring packet.\n");
           continue;