summaryrefslogtreecommitdiff
path: root/accel-pppd/ppp/lcp_opt_mru.c
diff options
context:
space:
mode:
authorGuillaume Nault <g.nault@alphalink.fr>2018-11-07 19:28:56 +0100
committerDmitry Kozlov <xeb@mail.ru>2018-11-12 17:00:34 +0300
commit29b90105499d03957a63c0efb22a7852b2b1faa1 (patch)
tree46d6327e6a9b4e360032034c1ad657ac6032690b /accel-pppd/ppp/lcp_opt_mru.c
parent142c943721615020bca80de4c69e6bbf574529aa (diff)
downloadaccel-ppp-29b90105499d03957a63c0efb22a7852b2b1faa1.tar.gz
accel-ppp-29b90105499d03957a63c0efb22a7852b2b1faa1.zip
ipcp: fix uninitialised memory access when negociating *-DNS-Address
When handling the EV_DNS event, IPCP assumes that the ->dns1 and ->dns2 fields of the event structure are properly set. But that may not be the case. If only one of the MS-Primary-DNS-Server or MS-Secondary-DNS-Server RADIUS attributes was received, then only ->dns1 or ->dns2 is set, while the other keeps a non initialised value. This uninitialised value is then copied by ev_dns() and proposed to the peer when negociating the Primary-DNS-Address or Secondary-DNS-Address IPCP options. That leaks four bytes of the stack to the network and prevents using the values found in the [dns] section of accel-ppp.conf as fallback. Fix this by initialising the whole event structure in rad_proc_attrs(). Then, in ev_dns(), we can check if ->dns1 or ->dns2 is properly set before copying them. That allows to propery fallback to accel-ppp.conf values when one of the values was not provided by RADIUS. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
Diffstat (limited to 'accel-pppd/ppp/lcp_opt_mru.c')
0 files changed, 0 insertions, 0 deletions