Revision fb5590f7

b/linux-user/syscall.c
7798 7798
#ifdef TARGET_NR_setxattr
7799 7799
    case TARGET_NR_listxattr:
7800 7800
    case TARGET_NR_llistxattr:
7801
    {
7802
        void *p, *b = 0;
7803
        if (arg2) {
7804
            b = lock_user(VERIFY_WRITE, arg2, arg3, 0);
7805
            if (!b) {
7806
                ret = -TARGET_EFAULT;
7807
                break;
7808
            }
7809
        }
7810
        p = lock_user_string(arg1);
7811
        if (p) {
7812
            if (num == TARGET_NR_listxattr) {
7813
                ret = get_errno(listxattr(p, b, arg3));
7814
            } else {
7815
                ret = get_errno(llistxattr(p, b, arg3));
7816
            }
7817
        } else {
7818
            ret = -TARGET_EFAULT;
7819
        }
7820
        unlock_user(p, arg1, 0);
7821
        unlock_user(b, arg2, arg3);
7822
        break;
7823
    }
7801 7824
    case TARGET_NR_flistxattr:
7802
        ret = -TARGET_EOPNOTSUPP;
7825
    {
7826
        void *b = 0;
7827
        if (arg2) {
7828
            b = lock_user(VERIFY_WRITE, arg2, arg3, 0);
7829
            if (!b) {
7830
                ret = -TARGET_EFAULT;
7831
                break;
7832
            }
7833
        }
7834
        ret = get_errno(flistxattr(arg1, b, arg3));
7835
        unlock_user(b, arg2, arg3);
7803 7836
        break;
7837
    }
7804 7838
    case TARGET_NR_setxattr:
7805 7839
    case TARGET_NR_lsetxattr:
7806 7840
        {

Also available in: Unified diff