mirror of https://github.com/xqemu/xqemu.git
linux-user: Check lock_user() return value for NULL
lock_user() can return NULL, which typically means the syscall should fail with EFAULT. Add checks in various places where Coverity spotted that we were missing them. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
This commit is contained in:
parent
68754b442b
commit
3211215e74
|
@ -5008,6 +5008,11 @@ static abi_long do_ioctl_dm(const IOCTLEntry *ie, uint8_t *buf_temp, int fd,
|
||||||
host_data = (char*)host_dm + host_dm->data_start;
|
host_data = (char*)host_dm + host_dm->data_start;
|
||||||
|
|
||||||
argptr = lock_user(VERIFY_READ, guest_data, guest_data_size, 1);
|
argptr = lock_user(VERIFY_READ, guest_data, guest_data_size, 1);
|
||||||
|
if (!argptr) {
|
||||||
|
ret = -TARGET_EFAULT;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
switch (ie->host_cmd) {
|
switch (ie->host_cmd) {
|
||||||
case DM_REMOVE_ALL:
|
case DM_REMOVE_ALL:
|
||||||
case DM_LIST_DEVICES:
|
case DM_LIST_DEVICES:
|
||||||
|
@ -11271,6 +11276,10 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
|
||||||
|
|
||||||
case TARGET_NR_mq_unlink:
|
case TARGET_NR_mq_unlink:
|
||||||
p = lock_user_string(arg1 - 1);
|
p = lock_user_string(arg1 - 1);
|
||||||
|
if (!p) {
|
||||||
|
ret = -TARGET_EFAULT;
|
||||||
|
break;
|
||||||
|
}
|
||||||
ret = get_errno(mq_unlink(p));
|
ret = get_errno(mq_unlink(p));
|
||||||
unlock_user (p, arg1, 0);
|
unlock_user (p, arg1, 0);
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue