]> git.eshelyaron.com Git - emacs.git/commitdiff
(conv_lisp_to_sockaddr): Fix previous change.
authorRichard M. Stallman <rms@gnu.org>
Thu, 13 Apr 2006 01:08:27 +0000 (01:08 +0000)
committerRichard M. Stallman <rms@gnu.org>
Thu, 13 Apr 2006 01:08:27 +0000 (01:08 +0000)
src/ChangeLog
src/process.c

index f0ebace973833b1d320a73688525a68b8acadadb..bca47f2dbdbb314d59411f5e78e4496dc3edd718 100644 (file)
@@ -1,3 +1,8 @@
+2006-04-12  Richard Stallman  <rms@gnu.org>
+
+       * 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  <mituharu@math.s.chiba-u.ac.jp>
 
        * fns.c [HAVE_MENUS && MAC_OS]: Include macterm.h.
index a17ef0e0915e9c35051ed9beb3fce794504119b3..dbb431496c3c34e8d3bf9f2f6f93b4f6391c4c3d 100644 (file)
@@ -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;