diff --git a/spa/include/spa/utils/json.h b/spa/include/spa/utils/json.h index 73cad7f59..19093169b 100644 --- a/spa/include/spa/utils/json.h +++ b/spa/include/spa/utils/json.h @@ -240,6 +240,8 @@ static inline bool spa_json_is_null(const char *val, int len) static inline int spa_json_parse_float(const char *val, int len, float *result) { char *end; + if (strspn(val, "+-0123456789.Ee") < (size_t)len) + return 0; *result = spa_strtof(val, &end); return len > 0 && end == val + len; } diff --git a/test/test-spa-json.c b/test/test-spa-json.c index 8187787fd..9ca5bfbe2 100644 --- a/test/test-spa-json.c +++ b/test/test-spa-json.c @@ -86,7 +86,7 @@ static void expect_float(struct spa_json *it, float val) { const char *value; int len; - float f; + float f = 0.0f; pwtest_int_gt((len = spa_json_next(it, &value)), 0); check_type(TYPE_FLOAT, value, len); pwtest_int_gt(spa_json_parse_float(value, len, &f), 0);