Module: kamailio
Branch: 5.2
Commit: 3d6246d97385fbd3742c1d860b8f974a79f0ef8c
URL:
https://github.com/kamailio/kamailio/commit/3d6246d97385fbd3742c1d860b8f974…
Author: Daniel-Constantin Mierla <miconda(a)gmail.com>
Committer: Henning Westerholt <hw(a)skalatan.de>
Date: 2020-01-24T16:41:23+01:00
core: pad some fields in contained structs for 4 byte alignment
- safety for sigbus on strict cpu architectures when accesing fields by
address
(cherry picked from commit 1296bb2270985a1bf3af04f35e4cdae1fe4b184a)
---
Modified: src/core/ip_addr.h
---
Diff:
https://github.com/kamailio/kamailio/commit/3d6246d97385fbd3742c1d860b8f974…
Patch:
https://github.com/kamailio/kamailio/commit/3d6246d97385fbd3742c1d860b8f974…
---
diff --git a/src/core/ip_addr.h b/src/core/ip_addr.h
index df57c5faa3..abad7f2530 100644
--- a/src/core/ip_addr.h
+++ b/src/core/ip_addr.h
@@ -91,6 +91,7 @@ typedef struct addr_info {
typedef struct advertise_info {
str name; /* name - eg.: foo.bar or 10.0.0.1 */
unsigned short port_no; /* port number */
+ short port_pad; /* padding field */
str port_no_str; /* port number converted to string -- optimization*/
str address_str; /*ip address converted to string -- optimization*/
struct ip_addr address; /* ip address */
@@ -109,6 +110,8 @@ typedef struct socket_info {
struct socket_info* prev;
unsigned short port_no; /* port number */
char proto; /* tcp or udp*/
+ char proto_pad0; /* padding field */
+ short proto_pad1; /* padding field */
str sock_str; /* Socket proto, ip, and port as string */
struct addr_info* addr_info_lst; /* extra addresses (e.g. SCTP mh) */
int workers; /* number of worker processes for this socket */
@@ -143,7 +146,11 @@ typedef struct receive_info {
* the msg was received */
char proto;
#ifdef USE_COMP
+ char proto_pad0; /* padding field */
short comp; /* compression */
+#else
+ char proto_pad0; /* padding field */
+ short proto_pad1; /* padding field */
#endif
/* no need for dst_su yet */
} receive_info_t;
@@ -153,10 +160,14 @@ typedef struct dest_info {
struct socket_info* send_sock;
union sockaddr_union to;
int id; /* tcp stores the connection id here */
- char proto;
snd_flags_t send_flags;
+ char proto;
#ifdef USE_COMP
+ char proto_pad0; /* padding field */
short comp;
+#else
+ char proto_pad0; /* padding field */
+ short proto_pad1; /* padding field */
#endif
} dest_info_t;