configure.ac: properly set seccomp_audit_arch for MIPS64

Currently seccomp_audit_arch is set to AUDIT_ARCH_MIPS64 or
AUDIT_ARCH_MIPSEL64 (depending on the endinness) when openssh is built
for MIPS64. However, that's only valid for n64 ABI. The right macros for
n32 ABI defined in seccomp.h are AUDIT_ARCH_MIPS64N32 and
AUDIT_ARCH_MIPSEL64N32, for big and little endian respectively.

Because of that an sshd built for MIPS64 n32 rejects connection attempts
and the output of strace reveals that the problem is related to seccomp
audit:

[pid   194] prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, {len=57,
filter=0x555d5da0}) = 0
[pid   194] write(7, "\0\0\0]\0\0\0\5\0\0\0Ulist_hostkey_types: "..., 97) = ?
[pid   193] <... poll resumed> )        = 2 ([{fd=5, revents=POLLIN|POLLHUP},
{fd=6, revents=POLLHUP}])
[pid   194] +++ killed by SIGSYS +++

This patch fixes that problem by setting the right value to
seccomp_audit_arch taking into account the MIPS64 ABI.

Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
This commit is contained in:
Vicente Olivert Riera 2017-06-20 16:42:28 +01:00 committed by Darren Tucker
parent 580086704c
commit 45011511a0
1 changed files with 16 additions and 2 deletions

View File

@ -874,10 +874,24 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16))
seccomp_audit_arch=AUDIT_ARCH_MIPSEL
;;
mips64-*)
seccomp_audit_arch=AUDIT_ARCH_MIPS64
case "$mips_abi" in
"n32")
seccomp_audit_arch=AUDIT_ARCH_MIPS64N32
;;
"n64")
seccomp_audit_arch=AUDIT_ARCH_MIPS64
;;
esac
;;
mips64el-*)
seccomp_audit_arch=AUDIT_ARCH_MIPSEL64
case "$mips_abi" in
"n32")
seccomp_audit_arch=AUDIT_ARCH_MIPSEL64N32
;;
"n64")
seccomp_audit_arch=AUDIT_ARCH_MIPSEL64
;;
esac
;;
esac
if test "x$seccomp_audit_arch" != "x" ; then