diff options
| author | Richard M. Stallman | 2006-04-13 01:08:27 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 2006-04-13 01:08:27 +0000 |
| commit | 9d1a8e5da1d074fb47658cd283e861d42552e9a9 (patch) | |
| tree | 3b62004f2bd2e9d932356f53dfda801980005c34 /src/process.c | |
| parent | 97ee303a6b16de212142286527d10051e260f0e8 (diff) | |
| download | emacs-9d1a8e5da1d074fb47658cd283e861d42552e9a9.tar.gz emacs-9d1a8e5da1d074fb47658cd283e861d42552e9a9.zip | |
(conv_lisp_to_sockaddr): Fix previous change.
Diffstat (limited to 'src/process.c')
| -rw-r--r-- | src/process.c | 13 |
1 files changed, 8 insertions, 5 deletions
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) | |||
| 2322 | } | 2322 | } |
| 2323 | 2323 | ||
| 2324 | /* Convert an address object (vector or string) to an internal sockaddr. | 2324 | /* Convert an address object (vector or string) to an internal sockaddr. |
| 2325 | Address format has already been validated by get_lisp_to_sockaddr_size, | 2325 | |
| 2326 | but just to be nice, we return without doing anything | 2326 | The address format has been basically validated by |
| 2327 | if FAMILY is not valid. */ | 2327 | get_lisp_to_sockaddr_size, but this does not mean FAMILY is valid; |
| 2328 | it could have come from user data. So if FAMILY is not valid, | ||
| 2329 | we return after zeroing *SA. */ | ||
| 2328 | 2330 | ||
| 2329 | static void | 2331 | static void |
| 2330 | conv_lisp_to_sockaddr (family, address, sa, len) | 2332 | conv_lisp_to_sockaddr (family, address, sa, len) |
| @@ -2338,7 +2340,6 @@ conv_lisp_to_sockaddr (family, address, sa, len) | |||
| 2338 | register int i; | 2340 | register int i; |
| 2339 | 2341 | ||
| 2340 | bzero (sa, len); | 2342 | bzero (sa, len); |
| 2341 | sa->sa_family = family; | ||
| 2342 | 2343 | ||
| 2343 | if (VECTORP (address)) | 2344 | if (VECTORP (address)) |
| 2344 | { | 2345 | { |
| @@ -2350,6 +2351,7 @@ conv_lisp_to_sockaddr (family, address, sa, len) | |||
| 2350 | i = XINT (p->contents[--len]); | 2351 | i = XINT (p->contents[--len]); |
| 2351 | sin->sin_port = htons (i); | 2352 | sin->sin_port = htons (i); |
| 2352 | cp = (unsigned char *)&sin->sin_addr; | 2353 | cp = (unsigned char *)&sin->sin_addr; |
| 2354 | sa->sa_family = family; | ||
| 2353 | } | 2355 | } |
| 2354 | #ifdef AF_INET6 | 2356 | #ifdef AF_INET6 |
| 2355 | else if (family == AF_INET6) | 2357 | else if (family == AF_INET6) |
| @@ -2365,7 +2367,7 @@ conv_lisp_to_sockaddr (family, address, sa, len) | |||
| 2365 | int j = XFASTINT (p->contents[i]) & 0xffff; | 2367 | int j = XFASTINT (p->contents[i]) & 0xffff; |
| 2366 | ip6[i] = ntohs (j); | 2368 | ip6[i] = ntohs (j); |
| 2367 | } | 2369 | } |
| 2368 | return; | 2370 | sa->sa_family = family; |
| 2369 | } | 2371 | } |
| 2370 | #endif | 2372 | #endif |
| 2371 | return; | 2373 | return; |
| @@ -2379,6 +2381,7 @@ conv_lisp_to_sockaddr (family, address, sa, len) | |||
| 2379 | cp = SDATA (address); | 2381 | cp = SDATA (address); |
| 2380 | for (i = 0; i < sizeof (sockun->sun_path) && *cp; i++) | 2382 | for (i = 0; i < sizeof (sockun->sun_path) && *cp; i++) |
| 2381 | sockun->sun_path[i] = *cp++; | 2383 | sockun->sun_path[i] = *cp++; |
| 2384 | sa->sa_family = family; | ||
| 2382 | } | 2385 | } |
| 2383 | #endif | 2386 | #endif |
| 2384 | return; | 2387 | return; |