[v2,03/10] examples/fips_validation: fix integer parse in test case
Checks
Commit Message
Parsing integer value in test case vector does not store
it because only string was expected. This patch adds handling
for integer value as well.
Fixes: 58cc98801eb ("examples/fips_validation: add JSON parsing")
Signed-off-by: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>
---
examples/fips_validation/fips_validation.c | 29 ++++++++++++++++------
1 file changed, 21 insertions(+), 8 deletions(-)
@@ -543,15 +543,28 @@ fips_test_parse_one_json_case(void)
for (i = 0; info.callbacks[i].key != NULL; i++) {
param = json_object_get(json_info.json_test_case, info.callbacks[i].key);
- if (param) {
- strcpy(info.one_line_text, json_string_value(param));
- ret = info.callbacks[i].cb(
- info.callbacks[i].key, info.one_line_text,
- info.callbacks[i].val
- );
- if (ret < 0)
- return ret;
+ if (!param)
+ continue;
+
+ switch (json_typeof(param)) {
+ case JSON_STRING:
+ snprintf(info.one_line_text, MAX_LINE_CHAR, "%s",
+ json_string_value(param));
+ break;
+
+ case JSON_INTEGER:
+ snprintf(info.one_line_text, MAX_LINE_CHAR, "%"JSON_INTEGER_FORMAT,
+ json_integer_value(param));
+ break;
+
+ default:
+ return -EINVAL;
}
+
+ ret = info.callbacks[i].cb(info.callbacks[i].key, info.one_line_text,
+ info.callbacks[i].val);
+ if (ret < 0)
+ return ret;
}
return 0;