提交 e3c33ec6 编写于 作者: P Peter Maydell 提交者: Riku Voipio

linux-user: Allow NULL value pointer in setxattr and getxattr

It's valid to pass a NULL value pointer to setxattr, so don't
fail this case EFAULT.
Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
Signed-off-by: NRiku Voipio <riku.voipio@linaro.org>
上级 5379557b
......@@ -7809,11 +7809,17 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
break;
case TARGET_NR_setxattr:
{
void *p, *n, *v;
void *p, *n, *v = 0;
if (arg3) {
v = lock_user(VERIFY_READ, arg3, arg4, 1);
if (!v) {
ret = -TARGET_EFAULT;
break;
}
}
p = lock_user_string(arg1);
n = lock_user_string(arg2);
v = lock_user(VERIFY_READ, arg3, arg4, 1);
if (p && n && v) {
if (p && n) {
ret = get_errno(setxattr(p, n, v, arg4, arg5));
} else {
ret = -TARGET_EFAULT;
......@@ -7825,11 +7831,17 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
break;
case TARGET_NR_getxattr:
{
void *p, *n, *v;
void *p, *n, *v = 0;
if (arg3) {
v = lock_user(VERIFY_WRITE, arg3, arg4, 0);
if (!v) {
ret = -TARGET_EFAULT;
break;
}
}
p = lock_user_string(arg1);
n = lock_user_string(arg2);
v = lock_user(VERIFY_WRITE, arg3, arg4, 0);
if (p && n && v) {
if (p && n) {
ret = get_errno(getxattr(p, n, v, arg4));
} else {
ret = -TARGET_EFAULT;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册