#250 closed defect (fixed)
Compile error if option --enable-udp is used
| Reported by: | rainer | Owned by: | rainer |
|---|---|---|---|
| Priority: | major | Milestone: | 2.8.5 |
| Component: | main | Version: | |
| Keywords: | Cc: |
Description
As noticed by Sean Chittenden, there's a compile error with the option --with-udp
gcc -DHAVE_CONFIG_H -I. -I./include -O2 -D_FORTIFY_SOURCE=2 -fstack-protector-all -fPIE -Wall -W -fno-strength-reduce -fno-omit-frame-pointer -Wno-empty-body -DSH_WITH_SERVER -o sh_forward.o -c x_sh_forward.c x_sh_forward.c: In function ‘recv_syslog_socket’: x_sh_forward.c:5791: warning: pointer targets in passing argument 6 of ‘recvfrom’ differ in signedness /usr/include/bits/socket2.h:65: note: expected ‘socklen_t * __restrict__’ but argument is of type ‘int *’ x_sh_forward.c:5793: warning: passing argument 3 of ‘sh_ipvx_save’ from incompatible pointer type ./include/sh_ipvx.h:54: note: expected ‘struct sockaddr *’ but argument is of type ‘struct sockaddr_in *’ x_sh_forward.c:5857: warning: implicit declaration of function ‘my_inet_ntoa’ x_sh_forward.c: In function ‘create_syslog_socket’: x_sh_forward.c:5961: warning: ordered comparison of pointer with integer zero x_sh_forward.c:5966: warning: passing argument 3 of ‘sl_close_fd’ makes integer from pointer without a cast ./include/slib.h:402: note: expected ‘int’ but argument is of type ‘int *’ x_sh_forward.c:5993: error: ‘errnum’ undeclared (first use in this function) x_sh_forward.c:5993: error: (Each undeclared identifier is reported only once x_sh_forward.c:5993: error: for each function it appears in.)
This is the patch offered by S.Chittenden (contains minor errors in the handling of the syslock_sock array):
@@ -5788,9 +5788,9 @@
return_next = 0;
}
- res = recvfrom(fd, buf, 1047, 0, (struct sockaddr *) &from, &fromlen);
+ res = recvfrom(fd, buf, 1047, 0, (struct sockaddr *) &from, (unsigned int *)&fromlen);
- sh_ipvx_save(&ss, sa->sa_family, &from);
+ sh_ipvx_save(&ss, sa->sa_family, sa);
sh_ipvx_ntoa(namebuf, sizeof(namebuf), &ss);
if (res > 0)
@@ -5854,7 +5854,7 @@
xml special chars (flag == 1) */
tmp = sh_tools_safe_name (ptr, 1);
sh_error_handle((-1), FIL__, __LINE__, 0, MSG_INET_SYSLOG,
- my_inet_ntoa(from.sin_addr),
+ namebuf,
(cfac == NULL) ? _("none") : cfac,
(cpri == NULL) ? _("none") : cpri,
(ptr == NULL) ? _("none") : ptr);
@@ -5958,12 +5958,12 @@
if (callerFlag == S_FALSE)
{
- if (enable_syslog_socket == S_FALSE && syslog_sock >= 0)
+ if (enable_syslog_socket == S_FALSE && syslog_sock[0] >= 0)
{
/* user does not wish to use this facility
*/
TPT(( 0, FIL__, __LINE__, _("msg=<close syslog socket>\n")));
- sl_close_fd(FIL__, __LINE__, syslog_sock);
+ sl_close_fd(FIL__, __LINE__, syslog_sock[0]);
syslog_sock[0] = -1;
}
SL_RETURN((-1), _("create_syslog_socket"));
@@ -5977,7 +5977,7 @@
addr.sin_family = AF_INET;
addr.sin_port = htons(514);
- do_syslog_socket(AF_INET, SOCK_DGRAM, 0, (struct sockaddr *) &addr, addrlen);
+ sock = do_syslog_socket(AF_INET, SOCK_DGRAM, 0, (struct sockaddr *) &addr, addrlen);
if (sock >= 0) {
syslog_sock[0] = sock;
@@ -6020,7 +6020,9 @@
freeaddrinfo (ai);
#endif
+#if defined(USE_IPVX)
end:
+#endif
if (syslog_sock_n > 1)
SH_MINSOCK += (syslog_sock_n - 1);
Note:
See TracTickets
for help on using tickets.
Fixed in changeset [341].