|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 2/8] store: Detect bad response from xenstored
On 14/08/2026 13:56, Owen Smith wrote: >> From: Tu Dinh <ngoc-tu.dinh@xxxxxxxxxx> >> Sent: 14 August 2026 11:20 AM >> To: Owen Smith; win-pv-devel@xxxxxxxxxxxxxxxxxxxx >> Subject: Re: [PATCH 2/8] store: Detect bad response from xenstored >> >> On 14/08/2026 12:05, Tu Dinh wrote: >>> On 14/08/2026 09:30, Owen Smith wrote: >>>> Detect when Header.len is larger than allowed, and fail the request. >>>> >>>> Assisted-by: ClaudeCode:claude-opus-4.8 >>>> Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx> >>> >>> Reviewed-by: Tu Dinh <ngoc-tu.dinh@xxxxxxxxxx> >>> >>> NB: xencrsh/store.c would likely benefit from the same change. >>> >>>> --- >>>> src/xenbus/store.c | 4 ++++ >>>> 1 file changed, 4 insertions(+) >>>> >>>> diff --git a/src/xenbus/store.c b/src/xenbus/store.c >>>> index 503144a..e2a0031 100644 >>>> --- a/src/xenbus/store.c >>>> +++ b/src/xenbus/store.c >>>> @@ -519,9 +519,13 @@ StoreReceiveResponse( >>>> >>>> ASSERT(StoreVerifyHeader(&Response->Header)); >>>> >>>> + status = STATUS_INVALID_BUFFER_SIZE; >>>> if (Response->Header.len == 0) >>>> goto done; >>>> >>>> + if (Response->Header.len >= XENSTORE_PAYLOAD_MAX) >> >> Never mind, shouldn't this be Response->Header.len > XENSTORE_PAYLOAD_MAX? >> > > I was thinking that a length of 4096 should fail, so there is space in the > buffer for a terminating null. > xenstore.txt specifies that: "The payload length (len field of the header) is limited to 4096 (XENSTORE_PAYLOAD_MAX) in both directions". So my understanding is that this field should tolerate a value of 4096. >>>> + goto done; >>>> + >>>> Response->Segment[XENBUS_STORE_RESPONSE_PAYLOAD_SEGMENT].Length = >>>> Response->Header.len; >>>> Response->Segment[XENBUS_STORE_RESPONSE_PAYLOAD_SEGMENT].Data = >>>> Response->Data; >>>> >>> >>> >>> -- Ngoc Tu Dinh | Vates XCP-ng Developer XCP-ng & Xen Orchestra - Vates solutions web: https://vates.tech
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |