projects
/
project
/
libubox.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
libubox: tests: add more blobmsg/json test cases
[project/libubox.git]
/
jshn.c
diff --git
a/jshn.c
b/jshn.c
index 1efe2548b74b9f57b5eb401aa5be2369187b3423..1b685e5fb0d853c4053389242b92c34967beb94f 100644
(file)
--- a/
jshn.c
+++ b/
jshn.c
@@
-68,7
+68,7
@@
static int add_json_array(struct array_list *a)
int ret;
for (i = 0, len = array_list_length(a); i < len; i++) {
int ret;
for (i = 0, len = array_list_length(a); i < len; i++) {
- s
printf(seq
, "%d", i);
+ s
nprintf(seq, sizeof(seq)
, "%d", i);
ret = add_json_element(seq, array_list_get_idx(a, i));
if (ret)
return ret;
ret = add_json_element(seq, array_list_get_idx(a, i));
if (ret)
return ret;
@@
-178,12
+178,15
@@
static int jshn_parse(const char *str)
obj = json_tokener_parse(str);
if (!obj || json_object_get_type(obj) != json_type_object) {
obj = json_tokener_parse(str);
if (!obj || json_object_get_type(obj) != json_type_object) {
+ if (obj)
+ json_object_put(obj);
fprintf(stderr, "Failed to parse message data\n");
return 1;
}
fprintf(stdout, "json_init;\n");
add_json_object(obj);
fflush(stdout);
fprintf(stderr, "Failed to parse message data\n");
return 1;
}
fprintf(stdout, "json_init;\n");
add_json_object(obj);
fflush(stdout);
+ json_object_put(obj);
return 0;
}
return 0;
}
@@
-197,25
+200,27
@@
static char *getenv_avl(const char *key)
static char *get_keys(const char *prefix)
{
char *keys;
static char *get_keys(const char *prefix)
{
char *keys;
+ size_t len = var_prefix_len + strlen(prefix) + sizeof("K_") + 1;
- keys = alloca(
var_prefix_len + strlen(prefix) + sizeof("K_") + 1
);
- s
printf(keys
, "%sK_%s", var_prefix, prefix);
+ keys = alloca(
len
);
+ s
nprintf(keys, len
, "%sK_%s", var_prefix, prefix);
return getenv_avl(keys);
}
static void get_var(const char *prefix, const char **name, char **var, char **type)
{
char *tmpname, *varname;
return getenv_avl(keys);
}
static void get_var(const char *prefix, const char **name, char **var, char **type)
{
char *tmpname, *varname;
+ size_t len = var_prefix_len + strlen(prefix) + 1 + strlen(*name) + 1 + sizeof("T_");
- tmpname = alloca(
var_prefix_len + strlen(prefix) + 1 + strlen(*name) + 1 + sizeof("T_")
);
+ tmpname = alloca(
len
);
- s
printf(tmpname
, "%s%s_%s", var_prefix, prefix, *name);
+ s
nprintf(tmpname, len
, "%s%s_%s", var_prefix, prefix, *name);
*var = getenv_avl(tmpname);
*var = getenv_avl(tmpname);
- s
printf(tmpname
, "%sT_%s_%s", var_prefix, prefix, *name);
+ s
nprintf(tmpname, len
, "%sT_%s_%s", var_prefix, prefix, *name);
*type = getenv_avl(tmpname);
*type = getenv_avl(tmpname);
- s
printf(tmpname
, "%sN_%s_%s", var_prefix, prefix, *name);
+ s
nprintf(tmpname, len
, "%sN_%s_%s", var_prefix, prefix, *name);
varname = getenv_avl(tmpname);
if (varname)
*name = varname;
varname = getenv_avl(tmpname);
if (varname)
*name = varname;
@@
-308,7
+313,7
@@
out:
static int usage(const char *progname)
{
static int usage(const char *progname)
{
- fprintf(stderr, "Usage: %s [-n] [-i] -r <message>|-R <file>|-w\n", progname);
+ fprintf(stderr, "Usage: %s [-n] [-i] -r <message>|-R <file>|-
o <file>|-p <prefix>|-
w\n", progname);
return 2;
}
return 2;
}
@@
-351,7
+356,7
@@
static int jshn_parse_file(const char *path)
return 3;
}
return 3;
}
- if (!(fbuf =
malloc(sb.st_size
))) {
+ if (!(fbuf =
calloc(1, sb.st_size+1
))) {
fprintf(stderr, "Error allocating memory for %s\n", path);
close(fd);
return 3;
fprintf(stderr, "Error allocating memory for %s\n", path);
close(fd);
return 3;
@@
-443,12
+448,15
@@
int main(int argc, char **argv)
indent = true;
break;
default:
indent = true;
break;
default:
+ free(vars);
return usage(argv[0]);
}
}
return usage(argv[0]);
}
}
+ free(vars);
return usage(argv[0]);
exit:
return usage(argv[0]);
exit:
+ free(vars);
return ret;
}
return ret;
}