]> xenbits.xensource.com Git - people/tklengyel/xen.git/commitdiff
xenstore: handle do_mkdir and do_rm failure
authorNorbert Manthey <nmanthey@amazon.de>
Fri, 26 Feb 2021 14:41:41 +0000 (15:41 +0100)
committerJulien Grall <jgrall@amazon.com>
Wed, 3 Mar 2021 18:17:14 +0000 (18:17 +0000)
In the out of memory case, we might return a NULL pointer when
canonicalizing node names. This NULL pointer is not checked when
creating a directory, or when removing a node. This change handles
the NULL pointer for these two cases.

This bug was discovered and resolved using Coverity Static Analysis
Security Testing (SAST) by Synopsys, Inc.

Signed-off-by: Norbert Manthey <nmanthey@amazon.de>
Reviewed-by: Thomas Friebel <friebelt@amazon.de>
Reviewed-by: Julien Grall <jgrall@amazon.co.uk>
Reviewed-by: Juergen Gross <jgross@suse.com>
Release-Acked-by: Ian Jackson <iwj@xenproject.org>
tools/xenstore/xenstored_core.c

index 3803aef081ba5040dfafc7f641ccfca675086d68..8febd09f5509594b6cbdcc481fe05224e170b616 100644 (file)
@@ -1160,6 +1160,8 @@ static int do_mkdir(struct connection *conn, struct buffered_data *in)
                /* No permissions? */
                if (errno != ENOENT)
                        return errno;
+               if (!name)
+                       return ENOMEM;
                node = create_node(conn, in, name, NULL, 0);
                if (!node)
                        return errno;
@@ -1274,6 +1276,8 @@ static int do_rm(struct connection *conn, struct buffered_data *in)
        if (!node) {
                /* Didn't exist already?  Fine, if parent exists. */
                if (errno == ENOENT) {
+                       if (!name)
+                               return ENOMEM;
                        parentname = get_parent(in, name);
                        if (!parentname)
                                return errno;