From: Richard M. Stallman Date: Thu, 13 Apr 2006 01:08:27 +0000 (+0000) Subject: (conv_lisp_to_sockaddr): Fix previous change. X-Git-Tag: emacs-pretest-22.0.90~3172 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=9d1a8e5da1d074fb47658cd283e861d42552e9a9;p=emacs.git (conv_lisp_to_sockaddr): Fix previous change. --- diff --git a/src/ChangeLog b/src/ChangeLog index f0ebace9738..bca47f2dbdb 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2006-04-12 Richard Stallman + + * process.c (conv_lisp_to_sockaddr): If FAMILY unknown, just return. + (Fprocess_send_eof): Abort if fail to open null device. + 2006-04-12 YAMAMOTO Mitsuharu * fns.c [HAVE_MENUS && MAC_OS]: Include macterm.h. diff --git a/src/process.c b/src/process.c index a17ef0e0915..dbb431496c3 100644 --- a/src/process.c +++ b/src/process.c @@ -2322,9 +2322,11 @@ get_lisp_to_sockaddr_size (address, familyp) } /* Convert an address object (vector or string) to an internal sockaddr. - Address format has already been validated by get_lisp_to_sockaddr_size, - but just to be nice, we return without doing anything - if FAMILY is not valid. */ + + The address format has been basically validated by + get_lisp_to_sockaddr_size, but this does not mean FAMILY is valid; + it could have come from user data. So if FAMILY is not valid, + we return after zeroing *SA. */ static void conv_lisp_to_sockaddr (family, address, sa, len) @@ -2338,7 +2340,6 @@ conv_lisp_to_sockaddr (family, address, sa, len) register int i; bzero (sa, len); - sa->sa_family = family; if (VECTORP (address)) { @@ -2350,6 +2351,7 @@ conv_lisp_to_sockaddr (family, address, sa, len) i = XINT (p->contents[--len]); sin->sin_port = htons (i); cp = (unsigned char *)&sin->sin_addr; + sa->sa_family = family; } #ifdef AF_INET6 else if (family == AF_INET6) @@ -2365,7 +2367,7 @@ conv_lisp_to_sockaddr (family, address, sa, len) int j = XFASTINT (p->contents[i]) & 0xffff; ip6[i] = ntohs (j); } - return; + sa->sa_family = family; } #endif return; @@ -2379,6 +2381,7 @@ conv_lisp_to_sockaddr (family, address, sa, len) cp = SDATA (address); for (i = 0; i < sizeof (sockun->sun_path) && *cp; i++) sockun->sun_path[i] = *cp++; + sa->sa_family = family; } #endif return;