diff options
author | maximilian attems <max@stro.at> | 2010-06-30 15:45:13 +0200 |
---|---|---|
committer | maximilian attems <max@stro.at> | 2010-07-07 14:06:26 +0200 |
commit | 593b0aa4c9fcfbec7780d9a5c02e8f9942f7387e (patch) | |
tree | 3556b209e6b0438a5a180c870d3e81efa9247d29 | |
parent | 617cba04b94cae042f71eb37c0a620587783a660 (diff) | |
download | klibc-593b0aa4c9fcfbec7780d9a5c02e8f9942f7387e.tar.gz |
[klibc] ipconfig: packet_send() fix uninitialized valgrind errors
Be conversvative and don't use C99 features, just memset the sll struct.
The relevant sll entries are assigned later down the road.
Rewrite struct msghdr msg assignments to not mix declarations and
assignements.
Fixes this valgrind errors:
==3319==
==3319== 1 errors in context 3 of 4:
==3319== Syscall param ioctl(SIOCSIF*ADDR) points to uninitialised byte(s)
==3319== at 0x403BE1: __syscall_common (in /home/maks/src/klibc-latest/usr/kinit/ipconfig/static/ipconfig.g)
==3319== by 0x401724: netdev_setaddress (in /home/maks/src/klibc-latest/usr/kinit/ipconfig/static/ipconfig.g)
==3319== by 0x30687464: ???
==3319== Address 0x7fefffb02 is on thread 1's stack
==3319==
==3319==
==3319== 2 errors in context 4 of 4:
==3319== Syscall param ÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝ points to uninitialised byte(s)
==3319== at 0x403BE1: __syscall_common (in /home/maks/src/klibc-latest/usr/kinit/ipconfig/static/ipconfig.g)
==3319== by 0x401B90: packet_send (in /home/maks/src/klibc-latest/usr/kinit/ipconfig/static/ipconfig.g)
==3319== by 0x7FEFFFA0F: ???
==3319== by 0x13: ???
==3319== by 0x6060DF: ??? (in /home/maks/src/klibc-latest/usr/kinit/ipconfig/static/ipconfig.g)
==3319== by 0x5: ???
==3319== Address 0x7fefffa22 is on thread 1's stack
Signed-off-by: maximilian attems <max@stro.at>
-rw-r--r-- | usr/kinit/ipconfig/packet.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/usr/kinit/ipconfig/packet.c b/usr/kinit/ipconfig/packet.c index 508c7ba156e0f..d24245761a3f0 100644 --- a/usr/kinit/ipconfig/packet.c +++ b/usr/kinit/ipconfig/packet.c @@ -114,17 +114,18 @@ static char *ntoa(uint32_t addr) int packet_send(struct netdev *dev, struct iovec *iov, int iov_len) { struct sockaddr_ll sll; - struct msghdr msg = { - .msg_name = &sll, - .msg_namelen = sizeof(sll), - .msg_iov = iov, - .msg_iovlen = iov_len, - .msg_control = NULL, - .msg_controllen = 0, - .msg_flags = 0 - }; + struct msghdr msg; int i, len = 0; + memset(&sll, 0, sizeof(sll)); + msg.msg_name = &sll; + msg.msg_namelen = sizeof(sll); + msg.msg_iov = iov; + msg.msg_iovlen = iov_len; + msg.msg_control = NULL; + msg.msg_controllen = 0; + msg.msg_flags = 0; + if (cfg_local_port != LOCAL_PORT) { ipudp_hdrs.udp.source = htons(cfg_local_port); ipudp_hdrs.udp.dest = htons(cfg_remote_port); |