Author: asomers
Date: Tue Nov 26 05:06:25 2019
New Revision: 355106
URL: https://svnweb.freebsd.org/changeset/base/355106

Log:
  ping, ping6: Use setitimer(2) instead of obsolete alarm(3)
  
  Submitted by: Ján Sučan <sucan...@gmail.com>
  Differential Revision:        https://reviews.freebsd.org/D22103

Modified:
  head/sbin/ping/ping.c
  head/sbin/ping6/ping6.c

Modified: head/sbin/ping/ping.c
==============================================================================
--- head/sbin/ping/ping.c       Tue Nov 26 02:50:25 2019        (r355105)
+++ head/sbin/ping/ping.c       Tue Nov 26 05:06:25 2019        (r355106)
@@ -505,7 +505,15 @@ main(int argc, char *const *argv)
                        if (alarmtimeout > MAXALARM)
                                errx(EX_USAGE, "invalid timeout: `%s' > %d",
                                    optarg, MAXALARM);
-                       alarm((int)alarmtimeout);
+                       {
+                               struct itimerval itv;
+
+                               timerclear(&itv.it_interval);
+                               timerclear(&itv.it_value);
+                               itv.it_value.tv_sec = (time_t)alarmtimeout;
+                               if (setitimer(ITIMER_REAL, &itv, NULL) != 0)
+                                       err(1, "setitimer");
+                       }
                        break;
                case 'v':
                        options |= F_VERBOSE;

Modified: head/sbin/ping6/ping6.c
==============================================================================
--- head/sbin/ping6/ping6.c     Tue Nov 26 02:50:25 2019        (r355105)
+++ head/sbin/ping6/ping6.c     Tue Nov 26 05:06:25 2019        (r355106)
@@ -574,7 +574,15 @@ main(int argc, char *argv[])
                        if (alarmtimeout > MAXALARM)
                                errx(EX_USAGE, "invalid timeout: `%s' > %d",
                                    optarg, MAXALARM);
-                       alarm((int)alarmtimeout);
+                       {
+                               struct itimerval itv;
+
+                               timerclear(&itv.it_interval);
+                               timerclear(&itv.it_value);
+                               itv.it_value.tv_sec = (time_t)alarmtimeout;
+                               if (setitimer(ITIMER_REAL, &itv, NULL) != 0)
+                                       err(1, "setitimer");
+                       }
                        break;
 #ifdef IPSEC
 #ifdef IPSEC_POLICY_IPSEC
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to