Public bug reported:

linux-user/syscall.c's do_socket function contains socket type remapping
to work around the nonsensically-permuted MIPS socket types. However, it
fails to account for the SOCK_NONBLOCK and SOCK_CLOEXEC flags that may
be or'd onto the type. Thus, a call from the application such as:

socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)

will fail to have the type permutation performed, and will be passed to
the system as:

socket(AF_INET, SOCK_DGRAM, IPPROTO_TCP)

resulting in EPROTONOSUPPORT.

To fix this, the flag bits should be masked off of the type before the
permutation. They also need remapping themselves (since MIPS uses
different values for these flags bits).

** Affects: qemu
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1075272

Title:
  socket type mapping wrong for mips app-level emulation

Status in QEMU:
  New

Bug description:
  linux-user/syscall.c's do_socket function contains socket type
  remapping to work around the nonsensically-permuted MIPS socket types.
  However, it fails to account for the SOCK_NONBLOCK and SOCK_CLOEXEC
  flags that may be or'd onto the type. Thus, a call from the
  application such as:

  socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)

  will fail to have the type permutation performed, and will be passed
  to the system as:

  socket(AF_INET, SOCK_DGRAM, IPPROTO_TCP)

  resulting in EPROTONOSUPPORT.

  To fix this, the flag bits should be masked off of the type before the
  permutation. They also need remapping themselves (since MIPS uses
  different values for these flags bits).

To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1075272/+subscriptions

Reply via email to