am-utils/am-utils-6.2-fix-compiler-a...

58 lines
2.1 KiB
Diff

am-utils-6.2 - fix compiler assignment warning due to libtirpc
From: Ian Kent <raven@themaw.net>
When using libtirpc there is a compiler warning on an assignment in
the amq_program_1() function.
This warning was due to libtirpc using struct sockaddr_in6 for some
address fields in the transport structure as it is backward compatible
with struct sockaddr_in when IPv4 is in use.
But if TLI is in use svc_getcaller() may not be defined or, if it is,
doesn't work as expected.
So change to using amu_svc_getcaller(), which deals with the needed
cast for libtirpc, and handle the NULL return if TLI is being used.
Signed-off-by: Ian Kent <raven@themaw.net>
---
amd/amq_svc.c | 24 +++++++++++++++---------
1 file changed, 15 insertions(+), 9 deletions(-)
diff --git a/amd/amq_svc.c b/amd/amq_svc.c
index 1f2b3d6..40f79fa 100644
--- a/amd/amq_svc.c
+++ b/amd/amq_svc.c
@@ -162,15 +162,21 @@ amq_program_1(struct svc_req *rqstp, SVCXPRT *transp)
#if defined(HAVE_TCPD_H) && defined(HAVE_LIBWRAP)
if (gopt.flags & CFM_USE_TCPWRAPPERS) {
- struct sockaddr_in *remote_addr = svc_getcaller(rqstp->rq_xprt);
- char *remote_hostname = inet_ntoa(remote_addr->sin_addr);
-
- if (!amqsvc_is_client_allowed(remote_addr)) {
- plog(XLOG_WARNING, "Amd denied remote amq service to %s", remote_hostname);
- svcerr_auth(transp, AUTH_FAILED);
- return;
- } else {
- dlog("Amd allowed remote amq service to %s", remote_hostname);
+ struct sockaddr_in *remote_addr = amu_svc_getcaller(rqstp->rq_xprt);
+ char *remote_hostname;
+
+ /* Check the return from amu_svc_getcaller() becuase it's always NULL
+ * if TLI is in use.
+ */
+ if (remote_addr) {
+ remote_hostname = inet_ntoa(remote_addr->sin_addr);
+ if (!amqsvc_is_client_allowed(remote_addr)) {
+ plog(XLOG_WARNING, "Amd denied remote amq service to %s", remote_hostname);
+ svcerr_auth(transp, AUTH_FAILED);
+ return;
+ } else {
+ dlog("Amd allowed remote amq service to %s", remote_hostname);
+ }
}
}
#endif /* defined(HAVE_TCPD_H) && defined(HAVE_LIBWRAP) */