1*92b42cb3SPatrick WilliamsFrom cbcd19f38ae4b31c57c57ce3619b8d2674defb68 Mon Sep 17 00:00:00 2001
2*92b42cb3SPatrick WilliamsFrom: Khem Raj <raj.khem@gmail.com>
3*92b42cb3SPatrick WilliamsDate: Sun, 28 Aug 2022 08:11:27 -0700
4*92b42cb3SPatrick WilliamsSubject: [PATCH] netifaces: initialize msghdr in a portable way
5*92b42cb3SPatrick Williams
6*92b42cb3SPatrick Williamsmusl has padding bytes inside the msghdr struct which means initializing
7*92b42cb3SPatrick Williamsfull structure will cause wrong assignments, doing partial assignment is
8*92b42cb3SPatrick Williamsmore portable and assign the elements after that
9*92b42cb3SPatrick Williams
10*92b42cb3SPatrick WilliamsFixes
11*92b42cb3SPatrick Williamsnetifaces.c:1808:9: error: incompatible pointer to integer conversion initializing 'int' with an expression of type 'void *' [-Wint-conversion]
12*92b42cb3SPatrick Williams        NULL,
13*92b42cb3SPatrick Williams        ^~~~
14*92b42cb3SPatrick Williams
15*92b42cb3SPatrick WilliamsUpstream-Status: Inappropriate [Upstream Repo is read-only]
16*92b42cb3SPatrick WilliamsSigned-off-by: Khem Raj <raj.khem@gmail.com>
17*92b42cb3SPatrick Williams---
18*92b42cb3SPatrick Williams netifaces.c | 15 ++++++---------
19*92b42cb3SPatrick Williams 1 file changed, 6 insertions(+), 9 deletions(-)
20*92b42cb3SPatrick Williams
21*92b42cb3SPatrick Williamsdiff --git a/netifaces.c b/netifaces.c
22*92b42cb3SPatrick Williamsindex 839c42c..7da78e7 100644
23*92b42cb3SPatrick Williams--- a/netifaces.c
24*92b42cb3SPatrick Williams+++ b/netifaces.c
25*92b42cb3SPatrick Williams@@ -1800,15 +1800,12 @@ gateways (PyObject *self)
26*92b42cb3SPatrick Williams     do {
27*92b42cb3SPatrick Williams       struct sockaddr_nl sanl_from;
28*92b42cb3SPatrick Williams       struct iovec iov = { msgbuf, bufsize };
29*92b42cb3SPatrick Williams-      struct msghdr msghdr = {
30*92b42cb3SPatrick Williams-        &sanl_from,
31*92b42cb3SPatrick Williams-        sizeof(sanl_from),
32*92b42cb3SPatrick Williams-        &iov,
33*92b42cb3SPatrick Williams-        1,
34*92b42cb3SPatrick Williams-        NULL,
35*92b42cb3SPatrick Williams-        0,
36*92b42cb3SPatrick Williams-        0
37*92b42cb3SPatrick Williams-      };
38*92b42cb3SPatrick Williams+      struct msghdr msghdr = { 0 };
39*92b42cb3SPatrick Williams+
40*92b42cb3SPatrick Williams+      msghdr.msg_name = &sanl_from;
41*92b42cb3SPatrick Williams+      msghdr.msg_namelen = sizeof(sanl_from);
42*92b42cb3SPatrick Williams+      msghdr.msg_iov = &iov;
43*92b42cb3SPatrick Williams+      msghdr.msg_iovlen = 1;
44*92b42cb3SPatrick Williams       int nllen;
45*92b42cb3SPatrick Williams
46*92b42cb3SPatrick Williams       ret = recvmsg (s, &msghdr, 0);
47*92b42cb3SPatrick Williams--
48*92b42cb3SPatrick Williams2.37.2
49*92b42cb3SPatrick Williams
50