bug-inetutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug-inetutils] Re: ping6 seg fault patch - 1


From: Rakesh Pandit
Subject: [bug-inetutils] Re: ping6 seg fault patch - 1
Date: Wed, 27 Aug 2008 09:00:57 +0530

2008/8/27 Rakesh Pandit <address@hidden>:
> Hello,
>  This one is first coherent patch from last weeks long patch. It fix
> segmentation fault in ping6.c

Missed the ChangeLog entry. I will post next patch when this is reviewed as
files are intersecting, and if there is a correction while review,
subsequent patches
will become corrupt.

Thanks,
rakesh

Index: ChangeLog
===================================================================
RCS file: /sources/inetutils/inetutils/ChangeLog,v
retrieving revision 1.322
diff -u -r1.322 ChangeLog
--- ChangeLog   23 Aug 2008 11:59:17 -0000      1.322
+++ ChangeLog   27 Aug 2008 03:25:49 -0000
@@ -1,3 +1,8 @@
+2008-08-27  Rakesh Pandit <address@hidden>
+
+       * ping/ping6.c (main, parse_opt): Fixed segmentation fault
+       in ping6.
+       
 2008-08-23  Debarshi Ray  <address@hidden>

        * hostname/hostname.c (main): Initialize OPTIONS to zero.
Index: ping/ping6.c
===================================================================
RCS file: /sources/inetutils/inetutils/ping/ping6.c,v
retrieving revision 1.11
diff -u -r1.11 ping6.c
--- ping/ping6.c        6 Jun 2008 16:43:43 -0000       1.11
+++ ping/ping6.c        27 Aug 2008 03:25:49 -0000
@@ -47,12 +47,15 @@
 #include "libinetutils.h"

 static PING *ping;
-bool is_root;
+bool is_root = false;
 unsigned char *data_buffer;
 u_char *patptr;
 int one = 1;
 int pattern_len = 16;
 size_t data_length = PING_DATALEN;
+size_t count = DEFAULT_PING_COUNT;
+size_t interval;
+int socket_type;
 static unsigned int options;
 static unsigned long preload = 0;

@@ -96,15 +99,16 @@
 {
   char *endptr;
   u_char pattern[16];
+  double v;

   switch (key)
     {
     case 'c':
-      ping->ping_count = ping_cvt_number (arg, 0, 0);
+      count = ping_cvt_number (arg, 0, 0);
       break;

     case 'd':
-      setsockopt (ping->ping_fd, SOL_SOCKET, SO_DEBUG, &one, sizeof (one));
+      socket_type = SO_DEBUG;
       break;

     case 'f':
@@ -117,7 +121,7 @@

     case 'i':
       options |= OPT_INTERVAL;
-      ping->ping_interval = ping_cvt_number (arg, 0, 0);
+      interval = ping_cvt_number (arg, 0, 0);
       break;

     case 'l':
@@ -144,7 +148,7 @@
       break;

     case 'r':
-      setsockopt (ping->ping_fd, SOL_SOCKET, SO_DONTROUTE, &one, sizeof (one));
+      socket_type = SO_DEBUG;
       break;

     case 's':
@@ -188,6 +192,16 @@
   argc -= index;
   argv += index;

+  if (count != 0)
+    ping->ping_count = count;
+
+  if (socket_type != 0)
+    setsockopt (ping->ping_fd, SOL_SOCKET, socket_type, &one, sizeof (one));
+
+  if (options & OPT_INTERVAL)
+    ping->ping_interval = interval;
+
+
   init_data_buffer (patptr, pattern_len);

   while (argc--)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]