From: Michael Jeanson Date: Thu, 29 Feb 2024 19:34:14 +0000 (-0500) Subject: Tests: fix TAP_AUTOTIME parsing in tap.c X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=01076722667ada7b84d366c26977f014aefd3ebc;p=lttng-tools.git Tests: fix TAP_AUTOTIME parsing in tap.c The atoi() function can return '0' on error and is not guaranteed to set errno accordingly. Use strtol() instead which can also return 0 on error but will set errno properly. Check errno after the function call to distinguish between the value '0' and the error code '0'. Change-Id: I5a82bb0f18d7e398dc3594aede5a38e6fc10dd7b Signed-off-by: Michael Jeanson Signed-off-by: Jérémie Galarneau --- diff --git a/tests/utils/tap/tap.c b/tests/utils/tap/tap.c index 1ef417fed..c92c14140 100644 --- a/tests/utils/tap/tap.c +++ b/tests/utils/tap/tap.c @@ -11,6 +11,7 @@ #include #include +#include #include #include #include @@ -183,11 +184,22 @@ void _tap_init(void) with Test::Harness */ setbuf(stdout, 0); - char *autotime_env = getenv("TAP_AUTOTIME"); - if (autotime_env != NULL) { - time_tests = atoi(autotime_env); - if (time_tests != 0) { - time_tests = 1; + /* + * Check if the TAP_AUTOTIME environment variable is set and + * contains at least one byte. + */ + const char *autotime_env = getenv("TAP_AUTOTIME"); + if (autotime_env != NULL && strnlen(autotime_env, 1)) { + int tap_autotime; + + /* + * Check if TAP_AUTOTIME is '0', also check errno + * because strtol() can return '0' on error. + */ + errno = 0; + tap_autotime = strtol(autotime_env, NULL, 10); + if (tap_autotime == 0 && errno == 0) { + time_tests = 0; } }