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 */
}