jshn: prefer snprintf usage

Better safe than sorry.

Reviewed-by: Jo-Philipp Wich <jo@mein.io>
Signed-off-by: Petr Štetiar <ynezz@true.cz>
This commit is contained in:
Petr Štetiar 2020-01-14 08:55:34 +01:00
parent b0886a37f3
commit a2aab30fc9

16
jshn.c
View file

@ -68,7 +68,7 @@ static int add_json_array(struct array_list *a)
int ret; int ret;
for (i = 0, len = array_list_length(a); i < len; i++) { for (i = 0, len = array_list_length(a); i < len; i++) {
sprintf(seq, "%d", i); snprintf(seq, sizeof(seq), "%d", i);
ret = add_json_element(seq, array_list_get_idx(a, i)); ret = add_json_element(seq, array_list_get_idx(a, i));
if (ret) if (ret)
return ret; return ret;
@ -200,25 +200,27 @@ static char *getenv_avl(const char *key)
static char *get_keys(const char *prefix) static char *get_keys(const char *prefix)
{ {
char *keys; char *keys;
size_t len = var_prefix_len + strlen(prefix) + sizeof("K_") + 1;
keys = alloca(var_prefix_len + strlen(prefix) + sizeof("K_") + 1); keys = alloca(len);
sprintf(keys, "%sK_%s", var_prefix, prefix); snprintf(keys, len, "%sK_%s", var_prefix, prefix);
return getenv_avl(keys); return getenv_avl(keys);
} }
static void get_var(const char *prefix, const char **name, char **var, char **type) static void get_var(const char *prefix, const char **name, char **var, char **type)
{ {
char *tmpname, *varname; 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);
sprintf(tmpname, "%s%s_%s", var_prefix, prefix, *name); snprintf(tmpname, len, "%s%s_%s", var_prefix, prefix, *name);
*var = getenv_avl(tmpname); *var = getenv_avl(tmpname);
sprintf(tmpname, "%sT_%s_%s", var_prefix, prefix, *name); snprintf(tmpname, len, "%sT_%s_%s", var_prefix, prefix, *name);
*type = getenv_avl(tmpname); *type = getenv_avl(tmpname);
sprintf(tmpname, "%sN_%s_%s", var_prefix, prefix, *name); snprintf(tmpname, len, "%sN_%s_%s", var_prefix, prefix, *name);
varname = getenv_avl(tmpname); varname = getenv_avl(tmpname);
if (varname) if (varname)
*name = varname; *name = varname;