xenstore: xenbus cannot be opened read-only

In order to read keys from xenstore, the xenstore libraries need to
write the request to the xenbus socket. This means that the socket
cannot be opened read-only.

Signed-off-by: Daniel De Graaf <dgdegra@tycho.nsa.gov>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
This commit is contained in:
Daniel De Graaf committed 2011-11-22 17:07:32 +00:00
1 parent ebbd2561b4
commit 27be7560a5
1 file changed
+8 -10
+8 -10
View File
@@ -182,15 +182,13 @@ error:
return -1;
}
static int get_dev(const char *connect_to, unsigned long flags)
static int get_dev(const char *connect_to)
{
if (flags & XS_OPEN_READONLY)
return open(connect_to, O_RDONLY);
else
return open(connect_to, O_RDWR);
/* We cannot open read-only because requests are writes */
return open(connect_to, O_RDWR);
}
static struct xs_handle *get_handle(const char *connect_to, unsigned long flags)
static struct xs_handle *get_handle(const char *connect_to)
{
struct stat buf;
struct xs_handle *h = NULL;
@@ -202,7 +200,7 @@ static struct xs_handle *get_handle(const char *connect_to, unsigned long flags)
if (S_ISSOCK(buf.st_mode))
fd = get_socket(connect_to);
else
fd = get_dev(connect_to, flags);
fd = get_dev(connect_to);
if (fd == -1)
return NULL;
@@ -258,12 +256,12 @@ struct xs_handle *xs_open(unsigned long flags)
struct xs_handle *xsh = NULL;
if (flags & XS_OPEN_READONLY)
xsh = get_handle(xs_daemon_socket_ro(), flags);
xsh = get_handle(xs_daemon_socket_ro());
else
xsh = get_handle(xs_daemon_socket(), flags);
xsh = get_handle(xs_daemon_socket());
if (!xsh && !(flags & XS_OPEN_SOCKETONLY))
xsh = get_handle(xs_domain_dev(), flags);
xsh = get_handle(xs_domain_dev());
return xsh;
}
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.