mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
tools/xenstore: fix get_spec_node()
In case get_spec_node() is being called for a special node starting
with '@' it won't set *canonical_name. This can result in a crash of
xenstored due to dereferencing the uninitialized name in
fire_watches().
This is no security issue as it requires either a privileged caller or
ownership of the special node in question by an unprivileged caller
(which is questionable, as this would make the owner privileged in some
way).
Fixes: d6bb63924f ("tools/xenstore: introduce dummy nodes for special watch paths")
Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Julien Grall <jgrall@amazon.com>
This commit is contained in:
1 parent
84f2751e10
commit
cef523b4a7
1 file changed
+4
-1
@@ -1253,8 +1253,11 @@ static struct node *get_spec_node(struct connection *conn, const void *ctx,
|
||||
const char *name, const char **canonical_name,
|
||||
unsigned int perm)
|
||||
{
|
||||
if (name[0] == '@')
|
||||
if (name[0] == '@') {
|
||||
if (canonical_name)
|
||||
*canonical_name = name;
|
||||
return get_node(conn, ctx, name, perm);
|
||||
}
|
||||
|
||||
return get_node_canonicalized(conn, ctx, name, canonical_name, perm);
|
||||
}
|
||||
|
||||