Lines 1-29
Link Here
|
1 |
--- fcrondyn.c.orig Mon Feb 6 14:44:52 2006 |
|
|
2 |
+++ fcrondyn.c Tue May 9 15:24:22 2006 |
3 |
@@ -399,17 +399,21 @@ |
4 |
int fd = -1; |
5 |
struct sockaddr_un addr; |
6 |
int len = 0; |
7 |
+ int sa_len; |
8 |
|
9 |
if ( (fd = socket(PF_UNIX, SOCK_STREAM, 0)) == -1 ) |
10 |
die_e("could not create socket"); |
11 |
|
12 |
addr.sun_family = AF_UNIX; |
13 |
- if ( (len = strlen(fifofile)) > sizeof(addr.sun_path) ) |
14 |
- die("Error : fifo file path too long (max is %d)", sizeof(addr.sun_path)); |
15 |
- strncpy(addr.sun_path, fifofile, sizeof(addr.sun_path) - 1); |
16 |
- addr.sun_path[sizeof(addr.sun_path)-1] = '\0'; |
17 |
+ if ( (len = strlen(fifofile)) > sizeof(addr.sun_path) - 1 ) |
18 |
+ die("Error : fifo file path too long (max is %d)", sizeof(addr.sun_path) - 1); |
19 |
+ strncpy(addr.sun_path, fifofile, sizeof(addr.sun_path)); |
20 |
+ sa_len = (addr.sun_path - (char *)&addr) + len; |
21 |
+#if HAVE_SA_LEN |
22 |
+ addr.sun_len = sa_len; |
23 |
+#endif |
24 |
|
25 |
- if ( connect(fd, (struct sockaddr *) &addr, sizeof(addr.sun_family) + len) < 0 ) |
26 |
+ if ( connect(fd, (struct sockaddr *) &addr, sa_len) < 0 ) |
27 |
die_e("Cannot connect() to fcron (check if fcron is running)"); |
28 |
|
29 |
if ( authenticate_user(fd) == ERR ) { |