plugins: use byte addressing of rand_pool_info data buffer

Fix out-of-bounds write in urandom plugin.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
Joachim Wiberg committed 2025-04-07 12:52:16 +02:00
1 parent c67d15e272
commit 3feff37ba5
1 file changed
+3 -1
+3 -1
View File
@@ -78,6 +78,7 @@ static void setup(void *arg)
{ {
#ifdef RANDOMSEED #ifdef RANDOMSEED
struct rand_pool_info *rpi; struct rand_pool_info *rpi;
unsigned char *rpi_buf;
ssize_t len = 0; ssize_t len = 0;
struct stat st; struct stat st;
int rc = -1; int rc = -1;
@@ -137,10 +138,11 @@ static void setup(void *arg)
goto fallback; goto fallback;
} }
rpi_buf = (unsigned char *)rpi->buf;
do { do {
ssize_t num; ssize_t num;
num = read(fd, &rpi->buf[len], RANDOM_BYTES - len); num = read(fd, &rpi_buf[len], RANDOM_BYTES - len);
if (num <= 0) { if (num <= 0) {
if (num == -1 && errno == EINTR) if (num == -1 && errno == EINTR)
continue; continue;