diff mbox series

[v2,1/2] rt-tests: hackbench: removed extra use of optind

Message ID 20240522144347.13281-1-ashelat@redhat.com
State New
Headers show
Series [v2,1/2] rt-tests: hackbench: removed extra use of optind | expand

Commit Message

Anubhav Shelat May 22, 2024, 2:43 p.m. UTC
Currently, using the -s option displays the usage message, even if the
option is properly used.

This is because Commit 778a02b7c519 ("rt-tests: hackbench: drop incorrect
and unnecessary usage of optind") forgot to drop a use of optind when
processing option 's' which was fixed in this commit.

Now the -s option works correctly with the proper arguments.

Note: The next commit in this patchset fixes "ERROR: do not use
assignment in if condition" on line 459.

Signed-off-by: Anubhav Shelat <ashelat@redhat.com>
---
 src/hackbench/hackbench.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

John Kacur May 22, 2024, 5:17 p.m. UTC | #1
On Wed, 22 May 2024, Anubhav Shelat wrote:

> hackbench is supposed to catch when the user passes
> negative arguments to options -f, -g, -l, and -s.
> 
> Previously hackbench would allow options to accept
> negative arguments, resulting in undefined behavior.
> 
> Now process_options() assigns variables outside of
> the if considiton where they are used. hackbench will
> output a usage message if the user inputs a negative
> argument.
> 
> Signed-off-by: Anubhav Shelat <ashelat@redhat.com>
> ---
>  src/hackbench/hackbench.c | 12 ++++++++----
>  1 file changed, 8 insertions(+), 4 deletions(-)
> 
> diff --git a/src/hackbench/hackbench.c b/src/hackbench/hackbench.c
> index fec8357bef81..55be325a38df 100644
> --- a/src/hackbench/hackbench.c
> +++ b/src/hackbench/hackbench.c
> @@ -426,7 +426,8 @@ static void process_options(int argc, char *argv[])
>  		}
>  		switch (c) {
>  		case 'f':
> -			if ((num_fds = atoi(optarg)) <= 0) {
> +			num_fds = atoi(optarg);
> +			if (atoi(optarg) <= 0) {
>  				fprintf(stderr, "%s: --fds|-f requires an integer > 0\n", argv[0]);
>  				print_usage_exit(1);
>  			}
> @@ -435,7 +436,8 @@ static void process_options(int argc, char *argv[])
>  			fifo = 1;
>  			break;
>  		case 'g':
> -			if ((num_groups = atoi(optarg)) <= 0) {
> +			num_groups = atoi(optarg);
> +			if (atoi(optarg) <= 0) {
>  				fprintf(stderr, "%s: --groups|-g requires an integer > 0\n", argv[0]);
>  				print_usage_exit(1);
>  			}
> @@ -444,7 +446,8 @@ static void process_options(int argc, char *argv[])
>  			print_usage_exit(0);
>  			break;
>  		case 'l':
> -			if ((loops = atoi(optarg)) <= 0) {
> +			loops = atoi(optarg);
> +			if (atoi(optarg) <= 0) {
>  				fprintf(stderr, "%s: --loops|-l requires an integer > 0\n", argv[0]);
>  				print_usage_exit(1);
>  			}
> @@ -456,7 +459,8 @@ static void process_options(int argc, char *argv[])
>  			use_inet = 1;
>  			break;
>  		case 's':
> -			if ((datasize = atoi(optarg)) <= 0) {
> +			datasize = atoi(optarg);
> +			if (atoi(optarg) <= 0) {
>  				fprintf(stderr, "%s: --datasize|-s requires an integer > 0\n", argv[0]);
>  				print_usage_exit(1);
>  			}
> -- 

Signed-off-by: John Kacur <jkacur@redhat.com>
John Kacur May 22, 2024, 5:17 p.m. UTC | #2
On Wed, 22 May 2024, Anubhav Shelat wrote:

> Currently, using the -s option displays the usage message, even if the
> option is properly used.
> 
> This is because Commit 778a02b7c519 ("rt-tests: hackbench: drop incorrect
> and unnecessary usage of optind") forgot to drop a use of optind when
> processing option 's' which was fixed in this commit.
> 
> Now the -s option works correctly with the proper arguments.
> 
> Note: The next commit in this patchset fixes "ERROR: do not use
> assignment in if condition" on line 459.
> 
> Signed-off-by: Anubhav Shelat <ashelat@redhat.com>
> ---
>  src/hackbench/hackbench.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/hackbench/hackbench.c b/src/hackbench/hackbench.c
> index d4924b3cc129..fec8357bef81 100644
> --- a/src/hackbench/hackbench.c
> +++ b/src/hackbench/hackbench.c
> @@ -456,7 +456,7 @@ static void process_options(int argc, char *argv[])
>  			use_inet = 1;
>  			break;
>  		case 's':
> -			if (!(argv[optind] && (datasize = atoi(optarg)) > 0)) {
> +			if ((datasize = atoi(optarg)) <= 0) {
>  				fprintf(stderr, "%s: --datasize|-s requires an integer > 0\n", argv[0]);
>  				print_usage_exit(1);
>  			}
> -- 

Signed-off-by: John Kacur <jkacur@redhat.com>
diff mbox series

Patch

diff --git a/src/hackbench/hackbench.c b/src/hackbench/hackbench.c
index d4924b3cc129..fec8357bef81 100644
--- a/src/hackbench/hackbench.c
+++ b/src/hackbench/hackbench.c
@@ -456,7 +456,7 @@  static void process_options(int argc, char *argv[])
 			use_inet = 1;
 			break;
 		case 's':
-			if (!(argv[optind] && (datasize = atoi(optarg)) > 0)) {
+			if ((datasize = atoi(optarg)) <= 0) {
 				fprintf(stderr, "%s: --datasize|-s requires an integer > 0\n", argv[0]);
 				print_usage_exit(1);
 			}