test: dm: virtio_rng: Update virtio-rng test

The virtio-rng test to verify effective handling of oversized return
buffers checks that an (undocumented) error is raised, instead of the
real concern, which is the surrounding buffer integrity following a rng
function call.
Update the test to check that the other contents of a buffer remain
unchanged instead of looking for an error code.

Signed-off-by: Kavin Gunasekara <kavin.gunasekara@arm.com>
Signed-off-by: Meet Patel <meet.patel2@arm.com>
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
This commit is contained in:
Kavin Gunasekara 2026-03-09 16:55:04 +00:00 committed by Tom Rini
parent ba7bf918da
commit 8019e3b35d

View File

@ -19,12 +19,19 @@ struct virtio_rng_priv {
struct virtqueue *rng_vq;
};
#define BUFFER_SIZE 16
#define CANARY "CANARYCANARYCANARYCANARY"
/* Test the virtio-rng driver validates the used size */
static int dm_test_virtio_rng_check_len(struct unit_test_state *uts)
{
struct udevice *bus, *dev;
struct virtio_rng_priv *priv;
u8 buffer[16];
u8 buffer[BUFFER_SIZE + sizeof(CANARY)];
/* write known data to buffer */
memset(buffer, 0xaa, BUFFER_SIZE);
memcpy(buffer + BUFFER_SIZE, CANARY, sizeof(CANARY));
/* check probe success */
ut_assertok(uclass_first_device_err(UCLASS_VIRTIO, &bus));
@ -44,7 +51,10 @@ static int dm_test_virtio_rng_check_len(struct unit_test_state *uts)
priv->rng_vq->vring.used->ring[0].len = U32_MAX;
/* check the driver gracefully handles the error */
ut_asserteq(-EIO, dm_rng_read(dev, buffer, sizeof(buffer)));
dm_rng_read(dev, buffer, BUFFER_SIZE);
/* check for the canary bytes behind the real buffer */
ut_asserteq_mem(buffer + BUFFER_SIZE, CANARY, sizeof(CANARY));
return 0;
}