diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2007-12-14 10:15:00 +0000 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2007-12-14 10:15:00 +0000 |
commit | 625a82b59cc973fc6adcca234e05e53fff4a96b5 (patch) | |
tree | b67fc0be96f43cbe1491c00dd3dd1dbe961e21fb /tools/xenstore/xenstored_watch.c | |
parent | 298950dbe88deb0697fdd4f273f1583dc51d20cc (diff) | |
download | xen-625a82b59cc973fc6adcca234e05e53fff4a96b5.tar.gz xen-625a82b59cc973fc6adcca234e05e53fff4a96b5.tar.bz2 xen-625a82b59cc973fc6adcca234e05e53fff4a96b5.zip |
xenstore size limits
* Documents the existing 4kby size limit on xenstore message payloads
* Causes xs.c in libxenstore to fail locally rather than violating
said limit (which is good because xenstored kills the client
connection if it's exceeded).
* Introduces some limits on path lengths in xenstored. I trust
no-one is using path lengths >2kby. This is good because currently
a domain client can create a 4kby relative path that the dom0 tools
cannot access since they'd have to specify the somewhat longer
absolute path.
* Removes uses of the host's PATH_MAX (!)
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Diffstat (limited to 'tools/xenstore/xenstored_watch.c')
-rw-r--r-- | tools/xenstore/xenstored_watch.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/tools/xenstore/xenstored_watch.c b/tools/xenstore/xenstored_watch.c index 72927fa9c7..8e3e4f2b61 100644 --- a/tools/xenstore/xenstored_watch.c +++ b/tools/xenstore/xenstored_watch.c @@ -125,6 +125,10 @@ void do_watch(struct connection *conn, struct buffered_data *in) if (strstarts(vec[0], "@")) { relative = false; + if (strlen(vec[0]) > XENSTORE_REL_PATH_MAX) { + send_error(conn, EINVAL); + return; + } /* check if valid event */ } else { relative = !strstarts(vec[0], "/"); |