diff --git a/minix/lib/libsys/ds.c b/minix/lib/libsys/ds.c index 7f665e9b0..223f08302 100644 --- a/minix/lib/libsys/ds.c +++ b/minix/lib/libsys/ds.c @@ -141,6 +141,9 @@ static int ds_retrieve_raw(const char *ds_name, char *vaddr, size_t *length, m.m_ds_req.val_len = *length; m.m_ds_req.flags = flags; r = do_invoke_ds(&m, DS_RETRIEVE, ds_name); + if (m.m_ds_reply.val_len > *length) { + return EINVAL; + } *length = m.m_ds_reply.val_len; cpf_revoke(gid);