<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Hey Simon,</p>
<p>another patch fixing a small memcheck error reported during
Pi-hole testing. The error is caused in send_from() (forward.c) by
handing a partially uninitialized stack variable to sendmsg() when
nowild == false.</p>
<p>Full error output (example):</p>
<div
style="color: #cccccc;background-color: #1f1f1f;font-family: 'Droid Sans Mono', 'monospace', monospace;font-weight: normal;font-size: 14px;line-height: 19px;white-space: pre;"><div><span
style="color: #cccccc;">==</span><span style="color: #569cd6;">1052839</span><span
style="color: #cccccc;">== Syscall param sendmsg(</span><span
style="color: #569cd6;">msg.msg_control</span><span
style="color: #cccccc;">) points to uninitialised byte(s)</span></div><div><span
style="color: #cccccc;">==</span><span style="color: #569cd6;">1052839</span><span
style="color: #cccccc;">== at </span><span
style="color: #569cd6;">0x4B7199D</span><span
style="color: #cccccc;">: __libc_sendmsg (</span><span
style="color: #569cd6;">sendmsg.c</span><span
style="color: #cccccc;">:</span><span style="color: #569cd6;">28</span><span
style="color: #cccccc;">)</span></div><div><span
style="color: #cccccc;">==</span><span style="color: #569cd6;">1052839</span><span
style="color: #cccccc;">== by </span><span
style="color: #569cd6;">0x4B7199D</span><span
style="color: #cccccc;">: sendmsg (</span><span
style="color: #569cd6;">sendmsg.c</span><span
style="color: #cccccc;">:</span><span style="color: #569cd6;">25</span><span
style="color: #cccccc;">)</span></div><div><span
style="color: #cccccc;">==</span><span style="color: #569cd6;">1052839</span><span
style="color: #cccccc;">== by </span><span
style="color: #569cd6;">0x21EADB</span><span style="color: #cccccc;">: send_from (</span><span
style="color: #569cd6;">forward.c</span><span
style="color: #cccccc;">:</span><span style="color: #569cd6;">101</span><span
style="color: #cccccc;">)</span></div><div><span
style="color: #cccccc;">==</span><span style="color: #569cd6;">1052839</span><span
style="color: #cccccc;">== by </span><span
style="color: #569cd6;">0x222551</span><span style="color: #cccccc;">: receive_query (</span><span
style="color: #569cd6;">forward.c</span><span
style="color: #cccccc;">:</span><span style="color: #569cd6;">1988</span><span
style="color: #cccccc;">)</span></div><div><span
style="color: #cccccc;">==</span><span style="color: #569cd6;">1052839</span><span
style="color: #cccccc;">== by </span><span
style="color: #569cd6;">0x20FD6A</span><span style="color: #cccccc;">: check_dns_listeners (</span><span
style="color: #569cd6;">dnsmasq.c</span><span
style="color: #cccccc;">:</span><span style="color: #569cd6;">1886</span><span
style="color: #cccccc;">)</span></div><div><span
style="color: #cccccc;">==</span><span style="color: #569cd6;">1052839</span><span
style="color: #cccccc;">== by </span><span
style="color: #569cd6;">0x2120EF</span><span style="color: #cccccc;">: main (</span><span
style="color: #569cd6;">dnsmasq.c</span><span
style="color: #cccccc;">:</span><span style="color: #569cd6;">1278</span><span
style="color: #cccccc;">)</span></div><div><span
style="color: #cccccc;">==</span><span style="color: #569cd6;">1052839</span><span
style="color: #cccccc;">== Location </span><span
style="color: #569cd6;">0x1fff000098</span><span
style="color: #cccccc;"> is </span><span style="color: #569cd6;">24</span><span
style="color: #cccccc;"> bytes inside local var </span><span
style="color: #ce9178;">"control_u"</span></div><div><span
style="color: #cccccc;">==</span><span style="color: #569cd6;">1052839</span><span
style="color: #cccccc;">== declared at </span><span
style="color: #569cd6;">forward.c</span><span
style="color: #cccccc;">:</span><span style="color: #569cd6;">49</span><span
style="color: #cccccc;">, in frame #</span><span
style="color: #569cd6;">1</span><span style="color: #cccccc;"> of thread </span><span
style="color: #569cd6;">1</span></div><div><span
style="color: #cccccc;">==</span><span style="color: #569cd6;">1052839</span><span
style="color: #cccccc;">== Uninitialised value was created by a stack allocation</span></div><div><span
style="color: #cccccc;">==</span><span style="color: #569cd6;">1052839</span><span
style="color: #cccccc;">== at </span><span
style="color: #569cd6;">0x21EA11</span><span style="color: #cccccc;">: send_from (</span><span
style="color: #569cd6;">forward.c</span><span
style="color: #cccccc;">:</span><span style="color: #569cd6;">38</span><span
style="color: #cccccc;">)</span></div></div>
<p></p>
<p>Note that the line-numbers are not necessarily 100% accurate. We
have not noticed any abnormal behavior, however, fixing this
reported error is easy enough.<br>
</p>
<p>Best,<br>
Dominik<br>
</p>
</body>
</html>