提交 de4905f4 编写于 作者: P Peter Xu 提交者: Michael Tokarev

qdict: fix unbounded stack warning for qdict_array_entries

Here we use one g_strdup_printf() to replace the two stack allocated
array, considering it's more convenient, safe, and as long as it's
called rarely only when quorum device opens. This will remove the
unbound stack warning when compiling with "-Wstack-usage=1000000".
Reviewed-by: NEric Blake <eblake@redhat.com>
Signed-off-by: NPeter Xu <peterx@redhat.com>
Reviewed-by: NMarkus Armbruster <armbru@redhat.com>
Signed-off-by: NMichael Tokarev <mjt@tls.msk.ru>
上级 1d817db3
......@@ -705,19 +705,16 @@ int qdict_array_entries(QDict *src, const char *subqdict)
for (i = 0; i < INT_MAX; i++) {
QObject *subqobj;
int subqdict_entries;
size_t slen = 32 + subqdict_len;
char indexstr[slen], prefix[slen];
size_t snprintf_ret;
char *prefix = g_strdup_printf("%s%u.", subqdict, i);
snprintf_ret = snprintf(indexstr, slen, "%s%u", subqdict, i);
assert(snprintf_ret < slen);
subqdict_entries = qdict_count_prefixed_entries(src, prefix);
subqobj = qdict_get(src, indexstr);
/* Remove ending "." */
prefix[strlen(prefix) - 1] = 0;
subqobj = qdict_get(src, prefix);
snprintf_ret = snprintf(prefix, slen, "%s%u.", subqdict, i);
assert(snprintf_ret < slen);
g_free(prefix);
subqdict_entries = qdict_count_prefixed_entries(src, prefix);
if (subqdict_entries < 0) {
return subqdict_entries;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册