From 1d123e2b92fb81961cef088867c7bfdce9f25b84 Mon Sep 17 00:00:00 2001 From: Keith Bostic Date: Thu, 21 May 1992 02:02:49 -0800 Subject: [PATCH] don't use free'd mbuf pointer; bug report net2/sys/10 SCCS-vsn: sys/kern/uipc_syscalls.c 7.26 --- usr/src/sys/kern/uipc_syscalls.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/usr/src/sys/kern/uipc_syscalls.c b/usr/src/sys/kern/uipc_syscalls.c index c18e6a34ff..8e22cd39db 100644 --- a/usr/src/sys/kern/uipc_syscalls.c +++ b/usr/src/sys/kern/uipc_syscalls.c @@ -2,7 +2,7 @@ * * %sccs.include.redist.c% * - * @(#)uipc_syscalls.c 7.25 (Berkeley) %G% + * @(#)uipc_syscalls.c 7.26 (Berkeley) %G% */ #include "param.h" @@ -1150,6 +1150,7 @@ sockargs(mp, buf, buflen, type) caddr_t buf; int buflen, type; { + register struct sockaddr *sa; register struct mbuf *m; int error; @@ -1168,16 +1169,17 @@ sockargs(mp, buf, buflen, type) error = copyin(buf, mtod(m, caddr_t), (u_int)buflen); if (error) (void) m_free(m); - else + else { *mp = m; - if (type == MT_SONAME) { - register struct sockaddr *sa = mtod(m, struct sockaddr *); + if (type == MT_SONAME) { + sa = mtod(m, struct sockaddr *); #if defined(COMPAT_OLDSOCK) && BYTE_ORDER != BIG_ENDIAN - if (sa->sa_family == 0 && sa->sa_len < AF_MAX) - sa->sa_family = sa->sa_len; + if (sa->sa_family == 0 && sa->sa_len < AF_MAX) + sa->sa_family = sa->sa_len; #endif - sa->sa_len = buflen; + sa->sa_len = buflen; + } } return (error); } -- 2.20.1