OSDN Git Service

linux-user: Return EINVAL for getgroups() with negative gidsetsize
authorPeter Maydell <peter.maydell@linaro.org>
Fri, 9 Jun 2023 16:29:15 +0000 (17:29 +0100)
committerMichael Tokarev <mjt@tls.msk.ru>
Fri, 9 Jun 2023 21:00:24 +0000 (00:00 +0300)
commit8fbf89a9669520ac09b3ae0013ff3eb34f8cab23
tree9d482f2d76b6275b50bc546a89bdaf3a8e126307
parent725160fe56eb9f6b9b13214b9adf519c25b9d527
linux-user: Return EINVAL for getgroups() with negative gidsetsize

Coverity doesn't like the way we might end up calling getgroups()
with a NULL grouplist pointer. This is fine for the special case
of gidsetsize == 0, but we will also do it if the guest passes
us a negative gidsetsize. (CID 1512465)

Explicitly fail the negative gidsetsize with EINVAL, as the kernel
does. This means we definitely only call the libc getgroups()
with valid parameters. It also brings the getgroups() code in
to line with the setgroups() code.

Possibly Coverity may still complain about getgroups(0, NULL), but
that would be a false positive.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Michael Tokarev <mjt@tls.msk.ru>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
linux-user/syscall.c