[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[xen staging] 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#staging



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.