From dd7d4f199e2ebfab1854f655ca27ce43b9a17eba Mon Sep 17 00:00:00 2001 From: Ruslan Bukin Date: Tue, 22 Nov 2016 18:31:43 +0000 Subject: [PATCH] Revert r306186 ("Adjust the sopt_val pointer on bigendian systems"). This logic doesn't work with bigger sopt_valsize (e.g. when ipfw passing 2048 bytes rule). Reported by: adrian Sponsored by: DARPA, AFRL --- sys/kern/uipc_socket.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c index d74430460a65..7cd2a75ff688 100644 --- a/sys/kern/uipc_socket.c +++ b/sys/kern/uipc_socket.c @@ -2455,12 +2455,8 @@ sooptcopyin(struct sockopt *sopt, void *buf, size_t len, size_t minlen) */ if ((valsize = sopt->sopt_valsize) < minlen) return EINVAL; - if (valsize > len) { -#if _BYTE_ORDER == _BIG_ENDIAN - sopt->sopt_val = (void *)((uintptr_t)sopt->sopt_val + (valsize - len)); -#endif + if (valsize > len) sopt->sopt_valsize = valsize = len; - } if (sopt->sopt_td != NULL) return (copyin(sopt->sopt_val, buf, valsize));