Package: rsyslog
Version: 7.4.4-1
Tags: patch

rsyslog emits lots of warnings when it runs on the hppa platform:
[30191.672000] handle_unaligned: 61 callbacks suppressed
[30191.672000] in:imuxsock(1963): unaligned access to 0x0000000043765a09 at 
ip=0x000000004255bbcb
[30191.676000] in:imuxsock(1963): unaligned access to 0x0000000043765a0d at 
ip=0x000000004255bbeb

Those warnings can be eliminated with the attached patch, which ensures that 
the values are copied to an aligned struct before usage.
It would be nice if you could apply this patch.

Helge
diff -up rsyslog-7.4.4/plugins/imuxsock/imuxsock.c.org rsyslog-7.4.4/plugins/imuxsock/imuxsock.c
--- rsyslog-7.4.4/plugins/imuxsock/imuxsock.c.org	2013-12-11 15:21:07.956000000 -0700
+++ rsyslog-7.4.4/plugins/imuxsock/imuxsock.c	2013-12-11 15:21:15.396000000 -0700
@@ -949,8 +949,8 @@ static rsRetVal readSocket(lstn_t *pLstn
 	struct msghdr msgh;
 	struct iovec msgiov;
 	struct cmsghdr *cm;
-	struct ucred *cred;
-	struct timeval *ts;
+	struct ucred cred_vals, *cred;
+	struct timeval time_vals, *ts;
 	uchar bufRcv[4096+1];
 	uchar *pRcv = NULL; /* receive buffer */
 #	if HAVE_SCM_CREDENTIALS
@@ -997,13 +997,13 @@ static rsRetVal readSocket(lstn_t *pLstn
 #				if HAVE_SCM_CREDENTIALS
 				if(   pLstn->bUseCreds
 				   && cm->cmsg_level == SOL_SOCKET && cm->cmsg_type == SCM_CREDENTIALS) {
-					cred = (struct ucred*) CMSG_DATA(cm);
+					cred = memcpy(&cred_vals, &CMSG_DATA(cm), sizeof(struct ucred));
 				}
 #				endif /* HAVE_SCM_CREDENTIALS */
 #				if HAVE_SO_TIMESTAMP
 				if(   pLstn->bUseSysTimeStamp 
 				   && cm->cmsg_level == SOL_SOCKET && cm->cmsg_type == SO_TIMESTAMP) {
-					ts = (struct timeval *)CMSG_DATA(cm);
+					ts = memcpy(&time_vals, &CMSG_DATA(cm), sizeof(struct timeval));
 				}
 #				endif /* HAVE_SO_TIMESTAMP */
 			}

Reply via email to