[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] emacs/src ChangeLog process.c
From: |
Andreas Schwab |
Subject: |
[Emacs-diffs] emacs/src ChangeLog process.c |
Date: |
Thu, 01 Jan 2009 15:58:41 +0000 |
CVSROOT: /sources/emacs
Module name: emacs
Changes by: Andreas Schwab <schwab> 09/01/01 15:58:41
Modified files:
src : ChangeLog process.c
Log message:
(conv_sockaddr_to_lisp): Add workaround for
getsockname bug on BSD.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/src/ChangeLog?cvsroot=emacs&r1=1.7243&r2=1.7244
http://cvs.savannah.gnu.org/viewcvs/emacs/src/process.c?cvsroot=emacs&r1=1.574&r2=1.575
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/emacs/emacs/src/ChangeLog,v
retrieving revision 1.7243
retrieving revision 1.7244
diff -u -b -r1.7243 -r1.7244
--- ChangeLog 1 Jan 2009 08:54:01 -0000 1.7243
+++ ChangeLog 1 Jan 2009 15:58:38 -0000 1.7244
@@ -1,3 +1,8 @@
+2009-01-01 Andreas Schwab <address@hidden>
+
+ * process.c (conv_sockaddr_to_lisp): Add workaround for
+ getsockname bug on BSD.
+
2009-01-01 Chong Yidong <address@hidden>
* xfns.c (x_create_tip_frame): Set border width of the X window.
Index: process.c
===================================================================
RCS file: /sources/emacs/emacs/src/process.c,v
retrieving revision 1.574
retrieving revision 1.575
diff -u -b -r1.574 -r1.575
--- process.c 19 Dec 2008 22:53:15 -0000 1.574
+++ process.c 1 Jan 2009 15:58:40 -0000 1.575
@@ -41,6 +41,9 @@
#ifdef HAVE_INTTYPES_H
#include <inttypes.h>
#endif
+#ifdef STDC_HEADERS
+#include <stdlib.h>
+#endif
#ifdef HAVE_UNISTD_H
#include <unistd.h>
@@ -2264,6 +2267,12 @@
unsigned char *cp;
register struct Lisp_Vector *p;
+ /* Workaround for a bug in getsockname on BSD: Names bound to
+ sockets in the UNIX domain are inaccessible; getsockname returns
+ a zero length name. */
+ if (len < OFFSETOF (struct sockaddr, sa_family) + sizeof (sa->sa_family))
+ return build_string ("");
+
switch (sa->sa_family)
{
case AF_INET:
@@ -2273,14 +2282,14 @@
address = Fmake_vector (make_number (len), Qnil);
p = XVECTOR (address);
p->contents[--len] = make_number (ntohs (sin->sin_port));
- cp = (unsigned char *)&sin->sin_addr;
+ cp = (unsigned char *) &sin->sin_addr;
break;
}
#ifdef AF_INET6
case AF_INET6:
{
struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *) sa;
- uint16_t *ip6 = (uint16_t *)&sin6->sin6_addr;
+ uint16_t *ip6 = (uint16_t *) &sin6->sin6_addr;
len = sizeof (sin6->sin6_addr)/2 + 1;
address = Fmake_vector (make_number (len), Qnil);
p = XVECTOR (address);
@@ -2301,11 +2310,11 @@
}
#endif
default:
- len -= sizeof (sa->sa_family);
+ len -= OFFSETOF (struct sockaddr, sa_family) + sizeof (sa->sa_family);
address = Fcons (make_number (sa->sa_family),
Fmake_vector (make_number (len), Qnil));
p = XVECTOR (XCDR (address));
- cp = (unsigned char *) sa + sizeof (sa->sa_family);
+ cp = (unsigned char *) &sa->sa_family + sizeof (sa->sa_family);
break;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] emacs/src ChangeLog process.c,
Andreas Schwab <=