summaryrefslogtreecommitdiffstats
path: root/src/privsep.c
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.c
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.c')
-rw-r--r--src/privsep.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/privsep.c b/src/privsep.c
index c8a59793..3eee0f48 100644
--- a/src/privsep.c
+++ b/src/privsep.c
@@ -48,6 +48,7 @@
#include <errno.h>
#include <fcntl.h>
#include <grp.h>
+#include <stddef.h> /* For offsetof, struct padding debug */
#include <signal.h>
#include <stdlib.h>
#include <string.h>
@@ -480,6 +481,31 @@ ps_sendmsg(struct dhcpcd_ctx *ctx, int fd, uint8_t cmd, unsigned long flags,
.ps_datalen = msg->msg_iov[0].iov_len,
};
+#if 0 /* For debugging structure padding. */
+ logerrx("psa.addr %lu %zu", offsetof(struct ps_addr, psa_family), sizeof(psm.ps_id.psi_addr.psa_family));
+ logerrx("psa.pad %lu %zu", offsetof(struct ps_addr, psa_pad), sizeof(psm.ps_id.psi_addr.psa_pad));
+ logerrx("psa.psa_u %lu %zu", offsetof(struct ps_addr, psa_u), sizeof(psm.ps_id.psi_addr.psa_u));
+ logerrx("psa %zu", sizeof(psm.ps_id.psi_addr));
+
+ logerrx("psi.addr %lu %zu", offsetof(struct ps_id, psi_addr), sizeof(psm.ps_id.psi_addr));
+ logerrx("psi.index %lu %zu", offsetof(struct ps_id, psi_ifindex), sizeof(psm.ps_id.psi_ifindex));
+ logerrx("psi.cmd %lu %zu", offsetof(struct ps_id, psi_cmd), sizeof(psm.ps_id.psi_cmd));
+ logerrx("psi.pad %lu %zu", offsetof(struct ps_id, psi_pad), sizeof(psm.ps_id.psi_pad));
+ logerrx("psi %zu", sizeof(struct ps_id));
+
+ logerrx("ps_cmd %lu", offsetof(struct ps_msghdr, ps_cmd));
+ logerrx("ps_pad %lu %zu", offsetof(struct ps_msghdr, ps_pad), sizeof(psm.ps_pad));
+ logerrx("ps_flags %lu %zu", offsetof(struct ps_msghdr, ps_flags), sizeof(psm.ps_flags));
+
+ logerrx("ps_id %lu %zu", offsetof(struct ps_msghdr, ps_id), sizeof(psm.ps_id));
+
+ logerrx("ps_namelen %lu %zu", offsetof(struct ps_msghdr, ps_namelen), sizeof(psm.ps_namelen));
+ logerrx("ps_controllen %lu %zu", offsetof(struct ps_msghdr, ps_controllen), sizeof(psm.ps_controllen));
+ logerrx("ps_pad2 %lu %zu", offsetof(struct ps_msghdr, ps_pad2), sizeof(psm.ps_pad2));
+ logerrx("ps_datalen %lu %zu", offsetof(struct ps_msghdr, ps_datalen), sizeof(psm.ps_datalen));
+ logerrx("psm %zu", sizeof(psm));
+#endif
+
return ps_sendpsmmsg(ctx, fd, &psm, msg);
}