Revision 579a97f7 linux-user/vm86.c

b/linux-user/vm86.c
64 64
    TaskState *ts = env->opaque;
65 65
    struct target_vm86plus_struct * target_v86;
66 66

  
67
    lock_user_struct(target_v86, ts->target_v86, 0);
67
    if (!lock_user_struct(VERIFY_WRITE, target_v86, ts->target_v86, 0))
68
        /* FIXME - should return an error */
69
        return;
68 70
    /* put the VM86 registers in the userspace register structure */
69 71
    target_v86->regs.eax = tswap32(env->regs[R_EAX]);
70 72
    target_v86->regs.ebx = tswap32(env->regs[R_EBX]);
......
424 426
    ts->vm86_saved_regs.gs = env->segs[R_GS].selector;
425 427

  
426 428
    ts->target_v86 = vm86_addr;
427
    lock_user_struct(target_v86, vm86_addr, 1);
429
    if (!lock_user_struct(VERIFY_READ, target_v86, vm86_addr, 1))
430
        return -EFAULT;
428 431
    /* build vm86 CPU state */
429 432
    ts->v86flags = tswap32(target_v86->regs.eflags);
430 433
    env->eflags = (env->eflags & ~SAFE_MASK) |

Also available in: Unified diff