Add a check of the FD_SETSIZE before the call to select()
authorAndrea Grandi <andrea.grandi@intel.com>
Fri, 25 Mar 2016 04:19:30 +0000 (04:19 +0000)
committerMatt Caswell <matt@openssl.org>
Wed, 6 Apr 2016 08:09:51 +0000 (09:09 +0100)
Reviewed-by: Kurt Roeckx <kurt@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
apps/speed.c

index 409f3a98e2eb77eff11ecdb933b1fa3e930d23d0..b3f477e1758da77c1e2db899817059873a480b2d 100644 (file)
@@ -1174,6 +1174,16 @@ static int run_benchmark(int async_jobs, int (*loop_function)(void *), loopargs_
                 max_fd = job_fd;
         }
 
+        if (max_fd >= FD_SETSIZE) {
+            BIO_printf(bio_err,
+                    "Error: max_fd (%d) must be smaller than FD_SETSIZE (%d). "
+                    "Decrease the value of async_jobs\n",
+                    max_fd, FD_SETSIZE);
+            ERR_print_errors(bio_err);
+            error = 1;
+            break;
+        }
+
         select_result = select(max_fd + 1, &waitfdset, NULL, NULL, NULL);
         if (select_result == -1 && errno == EINTR)
             continue;