summaryrefslogtreecommitdiffstats
path: root/src/privsep.h
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2020-01-08 16:07:58 +0000
committerRoy Marples <roy@marples.name>2020-01-08 16:07:58 +0000
commit4c212ae174dd5d4eb3afc230bcce6cea6e0970d7 (patch)
treea2bbd854de76533bb073a45ff321e8a27b6ef5a7 /src/privsep.h
parentcde30ee32e727b34e7d87d64cb4ba1f418b750fa (diff)
downloaddhcpcd-4c212ae174dd5d4eb3afc230bcce6cea6e0970d7.tar.xz
privsep: Pad structs out so there are no uninited memory issues
Add #ifdef'd out debug code for them as well.
Diffstat (limited to 'src/privsep.h')
-rw-r--r--src/privsep.h33
1 files changed, 18 insertions, 15 deletions
diff --git a/src/privsep.h b/src/privsep.h
index ae244e40..11e9fa7b 100644
--- a/src/privsep.h
+++ b/src/privsep.h
@@ -72,6 +72,7 @@
struct ps_addr {
sa_family_t psa_family;
+ uint8_t psa_pad[2];
union {
struct in_addr psau_in_addr;
struct in6_addr psau_in6_addr;
@@ -85,6 +86,23 @@ struct ps_id {
struct ps_addr psi_addr;
unsigned int psi_ifindex;
uint8_t psi_cmd;
+ uint8_t psi_pad[3];
+};
+
+struct ps_msghdr {
+ uint8_t ps_cmd;
+ uint8_t ps_pad[sizeof(unsigned long) - 1];
+ unsigned long ps_flags;
+ struct ps_id ps_id;
+ socklen_t ps_namelen;
+ socklen_t ps_controllen;
+ uint8_t ps_pad2[sizeof(size_t) - sizeof(socklen_t)];
+ size_t ps_datalen;
+};
+
+struct ps_msg {
+ struct ps_msghdr psm_hdr;
+ uint8_t psm_data[PS_BUFLEN];
};
struct ps_process {
@@ -106,21 +124,6 @@ struct ps_process {
};
TAILQ_HEAD(ps_process_head, ps_process);
-struct ps_msghdr {
- uint8_t ps_cmd;
- uint8_t ps_pad[sizeof(unsigned long) - 1];
- unsigned long ps_flags;
- struct ps_id ps_id;
- size_t ps_datalen;
- socklen_t ps_namelen;
- socklen_t ps_controllen;
-};
-
-struct ps_msg {
- struct ps_msghdr psm_hdr;
- uint8_t psm_data[PS_BUFLEN];
-};
-
#include "privsep-inet.h"
#include "privsep-root.h"
#ifdef INET