]> git.gsnw.org Git - fping.git/commitdiff
fix off-by-one error in generator limit
authorErik Auerswald <auerswal@unix-ag.uni-kl.de>
Sun, 7 Jul 2024 14:30:23 +0000 (16:30 +0200)
committerErik Auerswald <auerswal@unix-ag.uni-kl.de>
Fri, 12 Jul 2024 16:19:39 +0000 (18:19 +0200)
This commit does not add tests that verify the exact limit,
because pinging 100000 localhost addresses takes over 15
minutes on my PC.  I have tested this fix manually.

doc/fping.pod
src/fping.c

index b9ca150abf05f89fbac890dddd02fbdd2d8bf6bc..7d20d3914fbc6749cfcabb793749b1159840f84a 100644 (file)
@@ -295,7 +295,7 @@ line arguments, and 4 for a system call failure.
 =head1 RESTRICTIONS
 
 The number of addresses that can be generated using the C<-g>, C<--generate>
-option is limited to 100001.
+option is limited to 100000.
 
 If fping was configured with C<--enable-safe-limits>, the following values are
 not allowed for non-root users:
index 03b751bc1682b274ef1d5433a61e3bcb359f5939..ddffb287431af19807c8c9edfc1274f69580e83d 100644 (file)
@@ -1356,7 +1356,7 @@ void add_range(char *start, char *end)
 void add_addr_range_ipv4(unsigned long start_long, unsigned long end_long)
 {
     /* check if generator limit is exceeded */
-    if (end_long > start_long + MAX_GENERATE) {
+    if (end_long >= start_long + MAX_GENERATE) {
         fprintf(stderr, "%s: -g parameter generates too many addresses\n", prog);
         exit(1);
     }
@@ -3015,7 +3015,7 @@ void usage(int is_error)
     fprintf(out, "   -c, --count=N      count mode: send N pings to each target and report stats\n");
     fprintf(out, "   -f, --file=FILE    read list of targets from a file ( - means stdin)\n");
     fprintf(out, "   -g, --generate     generate target list (only if no -f specified),\n");
-    fprintf(out, "                      limited to at most %d targets\n", MAX_GENERATE+1);
+    fprintf(out, "                      limited to at most %d targets\n", MAX_GENERATE);
     fprintf(out, "                      (give start and end IP in the target list, or a CIDR address)\n");
     fprintf(out, "                      (ex. %s -g 192.168.1.0 192.168.1.255 or %s -g 192.168.1.0/24)\n", prog, prog);
     fprintf(out, "   -H, --ttl=N        set the IP TTL value (Time To Live hops)\n");