tools/xenstore: use talloc_asprintf_append() in do_control_help()

Instead of calculating the length of all help output and then
allocating the space for it, just use talloc_asprintf_append() to
expand the text as needed.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>
This commit is contained in:
Juergen Gross authored and Andrew Cooper committed 2022-01-21 12:42:11 +00:00
1 parent 13caa58579
commit c1c059fdfd
1 file changed
+7 -20
+7 -20
View File
@@ -853,36 +853,23 @@ static struct cmd_s cmds[] = {
static int do_control_help(void *ctx, struct connection *conn,
char **vec, int num)
{
int cmd, len = 0;
int cmd;
char *resp;
if (num)
return EINVAL;
for (cmd = 0; cmd < ARRAY_SIZE(cmds); cmd++) {
len += strlen(cmds[cmd].cmd) + 1;
len += strlen(cmds[cmd].pars) + 1;
}
len++;
resp = talloc_array(ctx, char, len);
resp = talloc_asprintf(ctx, "%s", "");
if (!resp)
return ENOMEM;
len = 0;
for (cmd = 0; cmd < ARRAY_SIZE(cmds); cmd++) {
strcpy(resp + len, cmds[cmd].cmd);
len += strlen(cmds[cmd].cmd);
resp[len] = '\t';
len++;
strcpy(resp + len, cmds[cmd].pars);
len += strlen(cmds[cmd].pars);
resp[len] = '\n';
len++;
resp = talloc_asprintf_append(resp, "%s\t%s\n",
cmds[cmd].cmd, cmds[cmd].pars);
if (!resp)
return ENOMEM;
}
resp[len] = 0;
send_reply(conn, XS_CONTROL, resp, len);
send_reply(conn, XS_CONTROL, resp, strlen(resp) + 1);
return 0;
}
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.