Bugfix: xadd command ID parse

strictly check the string to be converted,
strtoull() in libc may not set errno to EINVAL when the string contains
invalid digits.
This commit is contained in:
dejun.xdj 2018-04-10 17:05:48 +08:00
parent 8ac7af1c5d
commit 3c20b3fc24

View File

@ -917,8 +917,10 @@ int string2ull(const char *s, unsigned long long *value) {
return 1; return 1;
} }
errno = 0; errno = 0;
*value = strtoull(s,NULL,10); char *endptr = NULL;
if (errno == EINVAL || errno == ERANGE) return 0; /* strtoull() failed. */ *value = strtoull(s,&endptr,10);
if (errno == EINVAL || errno == ERANGE || !(*s != '\0' && *endptr == '\0'))
return 0; /* strtoull() failed. */
return 1; /* Conversion done! */ return 1; /* Conversion done! */
} }