[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] tools/xenstore: use talloc_asprintf_append() in do_control_help()
commit c1c059fdfd9e01760af44f46d61ed2f5f4117b30 Author: Juergen Gross <jgross@xxxxxxxx> AuthorDate: Thu Jan 20 07:59:47 2022 +0100 Commit: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> CommitDate: Fri Jan 21 12:42:11 2022 +0000 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@xxxxxxxx> Reviewed-by: Anthony PERARD <anthony.perard@xxxxxxxxxx> --- tools/xenstore/xenstored_control.c | 27 +++++++-------------------- 1 file changed, 7 insertions(+), 20 deletions(-) diff --git a/tools/xenstore/xenstored_control.c b/tools/xenstore/xenstored_control.c index 7b4300ef77..f0e00db633 100644 --- a/tools/xenstore/xenstored_control.c +++ b/tools/xenstore/xenstored_control.c @@ -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; } -- generated by git-patchbot for /home/xen/git/xen.git#master
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |