From 3d015f42a4ec56f20fbf1ccc3f55c36dc04fea40 Mon Sep 17 00:00:00 2001 From: Charles Giessen Date: Mon, 16 Jan 2023 12:07:34 -0700 Subject: cube: Check for width & height less are than zero The code would correctly reject widhth & height command line prameters that weren't greater than 0, but without a helpful error message about what was actually wrong. --- cube/cube.c | 26 ++++++++++++++++++++------ cube/cube.cpp | 34 ++++++++++++++++++++-------------- 2 files changed, 40 insertions(+), 20 deletions(-) diff --git a/cube/cube.c b/cube/cube.c index 0e279da1..75d573b4 100644 --- a/cube/cube.c +++ b/cube/cube.c @@ -4085,13 +4085,27 @@ static void demo_init(struct demo *demo, int argc, char **argv) { i++; continue; } - if (strcmp(argv[i], "--width") == 0 && i < argc - 1 && sscanf(argv[i + 1], "%d", &demo->width) == 1 && demo->width > 0) { - i++; - continue; + if (strcmp(argv[i], "--width") == 0) { + if (i < argc - 1 && sscanf(argv[i + 1], "%d", &demo->width) == 1) { + if (demo->width > 0) { + i++; + continue; + } else { + ERR_EXIT("The --width parameter must be greater than 0", "User Error"); + } + } + ERR_EXIT("The --width parameter must be followed by a number", "User Error"); } - if (strcmp(argv[i], "--height") == 0 && i < argc - 1 && sscanf(argv[i + 1], "%d", &demo->height) == 1 && demo->height > 0) { - i++; - continue; + if (strcmp(argv[i], "--height") == 0) { + if (i < argc - 1 && sscanf(argv[i + 1], "%d", &demo->height) == 1) { + if (demo->height > 0) { + i++; + continue; + } else { + ERR_EXIT("The --height parameter must be greater than 0", "User Error"); + } + } + ERR_EXIT("The --height parameter must be followed by a number", "User Error"); } if (strcmp(argv[i], "--suppress_popups") == 0) { demo->suppress_popups = true; diff --git a/cube/cube.cpp b/cube/cube.cpp index 8950d81e..ff24b5d4 100644 --- a/cube/cube.cpp +++ b/cube/cube.cpp @@ -888,25 +888,31 @@ void Demo::init(int argc, char **argv) { i++; continue; } - if (strcmp(argv[i], "--width") == 0 && i < argc - 1) { + if (strcmp(argv[i], "--width") == 0) { int32_t in_width = 0; - if (sscanf(argv[i + 1], "%d", &in_width) == 1 && in_width > 0) { - width = static_cast(in_width); - i++; - continue; - } else { - ERR_EXIT("The --width parameter must be greater than 0", "User Error"); + if (i < argc - 1 && sscanf(argv[i + 1], "%d", &in_width) == 1) { + if (in_width > 0) { + width = static_cast(in_width); + i++; + continue; + } else { + ERR_EXIT("The --width parameter must be greater than 0", "User Error"); + } } + ERR_EXIT("The --width parameter must be followed by a number", "User Error"); } - if (strcmp(argv[i], "--height") == 0 && i < argc - 1) { + if (strcmp(argv[i], "--height") == 0) { int32_t in_height = 0; - if (sscanf(argv[i + 1], "%d", &height) == 1 && height > 0) { - height = static_cast(in_height); - i++; - continue; - } else { - ERR_EXIT("The --height parameter must be greater than 0", "User Error"); + if (i < argc - 1 && sscanf(argv[i + 1], "%d", &height) == 1) { + if (height > 0) { + height = static_cast(in_height); + i++; + continue; + } else { + ERR_EXIT("The --height parameter must be greater than 0", "User Error"); + } } + ERR_EXIT("The --height parameter must be followed by a number", "User Error"); } if (strcmp(argv[i], "--suppress_popups") == 0) { suppress_popups = true; -- cgit v1.2.3