aboutsummaryrefslogtreecommitdiffstats
path: root/src/process.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/process.c')
-rw-r--r--src/process.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/process.c b/src/process.c
index 003f27b77b8..6e633a5825c 100644
--- a/src/process.c
+++ b/src/process.c
@@ -2322,7 +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 Format of address has already been validated by size_lisp_to_sockaddr. */ 2325
2326 The address format has been basically validated by
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. */
2326 2330
2327static void 2331static void
2328conv_lisp_to_sockaddr (family, address, sa, len) 2332conv_lisp_to_sockaddr (family, address, sa, len)
@@ -2336,7 +2340,6 @@ conv_lisp_to_sockaddr (family, address, sa, len)
2336 register int i; 2340 register int i;
2337 2341
2338 bzero (sa, len); 2342 bzero (sa, len);
2339 sa->sa_family = family;
2340 2343
2341 if (VECTORP (address)) 2344 if (VECTORP (address))
2342 { 2345 {
@@ -2348,6 +2351,7 @@ conv_lisp_to_sockaddr (family, address, sa, len)
2348 i = XINT (p->contents[--len]); 2351 i = XINT (p->contents[--len]);
2349 sin->sin_port = htons (i); 2352 sin->sin_port = htons (i);
2350 cp = (unsigned char *)&sin->sin_addr; 2353 cp = (unsigned char *)&sin->sin_addr;
2354 sa->sa_family = family;
2351 } 2355 }
2352#ifdef AF_INET6 2356#ifdef AF_INET6
2353 else if (family == AF_INET6) 2357 else if (family == AF_INET6)
@@ -2363,9 +2367,10 @@ conv_lisp_to_sockaddr (family, address, sa, len)
2363 int j = XFASTINT (p->contents[i]) & 0xffff; 2367 int j = XFASTINT (p->contents[i]) & 0xffff;
2364 ip6[i] = ntohs (j); 2368 ip6[i] = ntohs (j);
2365 } 2369 }
2366 return; 2370 sa->sa_family = family;
2367 } 2371 }
2368#endif 2372#endif
2373 return;
2369 } 2374 }
2370 else if (STRINGP (address)) 2375 else if (STRINGP (address))
2371 { 2376 {
@@ -2376,6 +2381,7 @@ conv_lisp_to_sockaddr (family, address, sa, len)
2376 cp = SDATA (address); 2381 cp = SDATA (address);
2377 for (i = 0; i < sizeof (sockun->sun_path) && *cp; i++) 2382 for (i = 0; i < sizeof (sockun->sun_path) && *cp; i++)
2378 sockun->sun_path[i] = *cp++; 2383 sockun->sun_path[i] = *cp++;
2384 sa->sa_family = family;
2379 } 2385 }
2380#endif 2386#endif
2381 return; 2387 return;
@@ -6236,6 +6242,8 @@ text to PROCESS after you call this function. */)
6236 emacs_close (XINT (XPROCESS (proc)->outfd)); 6242 emacs_close (XINT (XPROCESS (proc)->outfd));
6237#endif /* not HAVE_SHUTDOWN */ 6243#endif /* not HAVE_SHUTDOWN */
6238 new_outfd = emacs_open (NULL_DEVICE, O_WRONLY, 0); 6244 new_outfd = emacs_open (NULL_DEVICE, O_WRONLY, 0);
6245 if (new_outfd < 0)
6246 abort ();
6239 old_outfd = XINT (XPROCESS (proc)->outfd); 6247 old_outfd = XINT (XPROCESS (proc)->outfd);
6240 6248
6241 if (!proc_encode_coding_system[new_outfd]) 6249 if (!proc_encode_coding_system[new_outfd])