SCCS-vsn: sys/kern/uipc_syscalls.c 7.26
*
* %sccs.include.redist.c%
*
*
* %sccs.include.redist.c%
*
- * @(#)uipc_syscalls.c 7.25 (Berkeley) %G%
+ * @(#)uipc_syscalls.c 7.26 (Berkeley) %G%
caddr_t buf;
int buflen, type;
{
caddr_t buf;
int buflen, type;
{
+ register struct sockaddr *sa;
register struct mbuf *m;
int error;
register struct mbuf *m;
int error;
error = copyin(buf, mtod(m, caddr_t), (u_int)buflen);
if (error)
(void) m_free(m);
error = copyin(buf, mtod(m, caddr_t), (u_int)buflen);
if (error)
(void) m_free(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 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;
+ sa->sa_len = buflen;
+ }