summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
b26c3b6)
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 <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
#include <assert.h>
#include <ctype.h>
#include <assert.h>
#include <ctype.h>
#include <limits.h>
#include <stdarg.h>
#include <stdio.h>
#include <limits.h>
#include <stdarg.h>
#include <stdio.h>
with Test::Harness */
setbuf(stdout, 0);
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;