diff mbox series

[2/2] lib: Replace atoi/atof with SAFE_STRTOL/SAFE_STRTOF

Message ID 20221130021901.33143-3-zhaogongyi@huawei.com
State Superseded
Headers show
Series Add handling of abnormal input for parse_opts() | expand

Commit Message

Zhao Gongyi Nov. 30, 2022, 2:19 a.m. UTC
Replace atoi/atof with SAFE_STRTOL/SAFE_STRTOF in parse_opts(),
it is hoped to deal with the abnormal input.

Modify the requirement iterations range from '>= 0' to '> 0',
when iterations' value equal to 0, the test will not run.

Signed-off-by: Zhao Gongyi <zhaogongyi@huawei.com>
---
 lib/tst_test.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

--
2.17.1

Comments

Cyril Hrubis Nov. 30, 2022, 1:49 p.m. UTC | #1
On Wed, Nov 30, 2022 at 10:19:01AM +0800, Zhao Gongyi via ltp wrote:
> Replace atoi/atof with SAFE_STRTOL/SAFE_STRTOF in parse_opts(),
> it is hoped to deal with the abnormal input.
> 
> Modify the requirement iterations range from '>= 0' to '> 0',
> when iterations' value equal to 0, the test will not run.
> 
> Signed-off-by: Zhao Gongyi <zhaogongyi@huawei.com>
> ---
>  lib/tst_test.c | 8 +++-----
>  1 file changed, 3 insertions(+), 5 deletions(-)
> 
> diff --git a/lib/tst_test.c b/lib/tst_test.c
> index b62559d75..254229d96 100644
> --- a/lib/tst_test.c
> +++ b/lib/tst_test.c
> @@ -677,15 +677,13 @@ static void parse_opts(int argc, char *argv[])
>  			print_test_tags();
>  			exit(0);
>  		case 'i':
> -			iterations = atoi(optarg);
> -			if (iterations < 0)
> -				tst_brk(TBROK, "Number of iterations (-i) must be >= 0");
> +			iterations = SAFE_STRTOL(optarg, 1, INT_MAX);
>  		break;
>  		case 'I':
>  			if (tst_test->max_runtime > 0)
> -				tst_test->max_runtime = atoi(optarg);
> +				tst_test->max_runtime = SAFE_STRTOL(optarg, 1, INT_MAX);
>  			else
> -				duration = atof(optarg);
> +				duration = SAFE_STRTOF(optarg);

Shouldn't we limit the duration to positive numbers here as well?

I guess that we should add min and max option to the SAFE_STRTOF() and
call the conversion with SAFE_STRTOF(optarg, 0.1, HUGE_VALF); here
instead.

>  		break;
>  		case 'C':
>  #ifdef UCLINUX
> --
> 2.17.1
> 
> 
> -- 
> Mailing list info: https://lists.linux.it/listinfo/ltp
diff mbox series

Patch

diff --git a/lib/tst_test.c b/lib/tst_test.c
index b62559d75..254229d96 100644
--- a/lib/tst_test.c
+++ b/lib/tst_test.c
@@ -677,15 +677,13 @@  static void parse_opts(int argc, char *argv[])
 			print_test_tags();
 			exit(0);
 		case 'i':
-			iterations = atoi(optarg);
-			if (iterations < 0)
-				tst_brk(TBROK, "Number of iterations (-i) must be >= 0");
+			iterations = SAFE_STRTOL(optarg, 1, INT_MAX);
 		break;
 		case 'I':
 			if (tst_test->max_runtime > 0)
-				tst_test->max_runtime = atoi(optarg);
+				tst_test->max_runtime = SAFE_STRTOL(optarg, 1, INT_MAX);
 			else
-				duration = atof(optarg);
+				duration = SAFE_STRTOF(optarg);
 		break;
 		case 'C':
 #ifdef UCLINUX