aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormaximilian attems <max@stro.at>2010-06-30 15:45:13 +0200
committermaximilian attems <max@stro.at>2010-07-07 14:06:26 +0200
commit593b0aa4c9fcfbec7780d9a5c02e8f9942f7387e (patch)
tree3556b209e6b0438a5a180c870d3e81efa9247d29
parent617cba04b94cae042f71eb37c0a620587783a660 (diff)
downloadklibc-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.c19
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);