json: empty string should not give a valid number

This commit is contained in:
Wim Taymans 2022-03-20 09:28:39 +01:00
parent b868ec36c5
commit 947d15a60a
2 changed files with 18 additions and 2 deletions

View file

@ -238,7 +238,7 @@ static inline int spa_json_parse_float(const char *val, int len, float *result)
{
char *end;
*result = strtof(val, &end);
return end == val + len;
return len > 0 && end == val + len;
}
static inline bool spa_json_is_float(const char *val, int len)
{
@ -259,7 +259,7 @@ static inline int spa_json_parse_int(const char *val, int len, int *result)
{
char *end;
*result = strtol(val, &end, 0);
return end == val + len;
return len > 0 && end == val + len;
}
static inline bool spa_json_is_int(const char *val, int len)
{

View file

@ -223,6 +223,20 @@ PWTEST(json_overflow)
return PWTEST_PASS;
}
PWTEST(json_float)
{
float v;
pwtest_int_eq(spa_json_parse_float("", 0, &v), 0);
return PWTEST_PASS;
}
PWTEST(json_int)
{
int v;
pwtest_int_eq(spa_json_parse_int("", 0, &v), 0);
return PWTEST_PASS;
}
PWTEST_SUITE(spa_json)
{
pwtest_add(json_abi, PWTEST_NOARG);
@ -230,6 +244,8 @@ PWTEST_SUITE(spa_json)
pwtest_add(json_encode, PWTEST_NOARG);
pwtest_add(json_array, PWTEST_NOARG);
pwtest_add(json_overflow, PWTEST_NOARG);
pwtest_add(json_float, PWTEST_NOARG);
pwtest_add(json_int, PWTEST_NOARG);
return PWTEST_PASS;
}