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

[PATCH v3 2/8] store: Detect bad response from xenstored



Detect when Header.len is larger than allowed, and fail the request.
A length of 0 is valid for some operations.
Also modify StoreVerifyHeader to fail on length > XENSTORE_PAYLOAD_MAX

Assisted-by: ClaudeCode:claude-opus-4.8
Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx>
---
 src/xenbus/store.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/xenbus/store.c b/src/xenbus/store.c
index 503144a..d1b396b 100644
--- a/src/xenbus/store.c
+++ b/src/xenbus/store.c
@@ -491,7 +491,7 @@ StoreVerifyHeader(
         Valid = FALSE;
     }
 
-    if (Header->len >= XENSTORE_PAYLOAD_MAX) {
+    if (Header->len > XENSTORE_PAYLOAD_MAX) {
         Error("ILLEGAL LENGTH 0x%08x\n", Header->len);
         Valid = FALSE;
     }
@@ -522,6 +522,10 @@ StoreReceiveResponse(
     if (Response->Header.len == 0)
         goto done;
 
+    status = STATUS_INVALID_BUFFER_SIZE;
+    if (Response->Header.len > XENSTORE_PAYLOAD_MAX)
+        goto done;
+
     Response->Segment[XENBUS_STORE_RESPONSE_PAYLOAD_SEGMENT].Length = 
Response->Header.len;
     Response->Segment[XENBUS_STORE_RESPONSE_PAYLOAD_SEGMENT].Data = 
Response->Data;
 
-- 
2.51.2.windows.1




 


Rackspace

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