Prechádzať zdrojové kódy

Merge pull request #486 from sawolf/451-icmp-bind

check_icmp: Resolve #451 by moving call to bind() after call to socket()
Sebastian Wolf 6 rokov pred
rodič
commit
099362ac09
1 zmenil súbory, kde vykonal 6 pridanie a 1 odobranie
  1. 6 1
      plugins-root/check_icmp.c

+ 6 - 1
plugins-root/check_icmp.c

@@ -489,6 +489,7 @@ static int handle_random_icmp(unsigned char *packet,
 int main(int argc, char **argv) {
 int main(int argc, char **argv) {
   int i;
   int i;
   char *ptr;
   char *ptr;
+  char *bind_address = NULL;
   long int arg;
   long int arg;
   int icmp_sockerrno, udp_sockerrno, tcp_sockerrno;
   int icmp_sockerrno, udp_sockerrno, tcp_sockerrno;
   int result;
   int result;
@@ -654,7 +655,7 @@ int main(int argc, char **argv) {
 
 
       case 's':
       case 's':
         /* specify source IP address */
         /* specify source IP address */
-        set_source_ip(optarg);
+        bind_address = optarg;
         break;
         break;
 
 
       case 'V':
       case 'V':
@@ -711,6 +712,10 @@ int main(int argc, char **argv) {
     icmp_sockerrno = errno;
     icmp_sockerrno = errno;
   }
   }
 
 
+  if (bind_address != NULL) {
+    set_source_ip(bind_address);
+  }
+
   /* now drop privileges (no effect if not setsuid or geteuid() == 0) */
   /* now drop privileges (no effect if not setsuid or geteuid() == 0) */
   setuid(getuid());
   setuid(getuid());