Module Name: src Committed By: christos Date: Mon Jan 1 00:45:12 UTC 2018
Modified Files: src/sys/kern: uipc_socket.c Log Message: make sure that we have enough space, don't require the exact size (Tom Ivar Helbekkmo) To generate a diff of this commit: cvs rdiff -u -r1.257 -r1.258 src/sys/kern/uipc_socket.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/kern/uipc_socket.c diff -u src/sys/kern/uipc_socket.c:1.257 src/sys/kern/uipc_socket.c:1.258 --- src/sys/kern/uipc_socket.c:1.257 Wed Oct 25 04:12:39 2017 +++ src/sys/kern/uipc_socket.c Sun Dec 31 19:45:12 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: uipc_socket.c,v 1.257 2017/10/25 08:12:39 maya Exp $ */ +/* $NetBSD: uipc_socket.c,v 1.258 2018/01/01 00:45:12 christos Exp $ */ /*- * Copyright (c) 2002, 2007, 2008, 2009 The NetBSD Foundation, Inc. @@ -71,7 +71,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: uipc_socket.c,v 1.257 2017/10/25 08:12:39 maya Exp $"); +__KERNEL_RCSID(0, "$NetBSD: uipc_socket.c,v 1.258 2018/01/01 00:45:12 christos Exp $"); #ifdef _KERNEL_OPT #include "opt_compat_netbsd.h" @@ -2109,7 +2109,9 @@ sockopt_set(struct sockopt *sopt, const return error; } - KASSERT(sopt->sopt_size == len); + if (sopt->sopt_size < len) + return EINVAL; + memcpy(sopt->sopt_data, buf, len); return 0; } @@ -2169,7 +2171,9 @@ sockopt_setmbuf(struct sockopt *sopt, st return error; } - KASSERT(sopt->sopt_size == len); + if (sopt->sopt_size < len) + return EINVAL; + m_copydata(m, 0, len, sopt->sopt_data); m_freem(m);