Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
Kea
Kea
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 416
    • Issues 416
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 66
    • Merge Requests 66
  • Operations
    • Operations
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
  • ISC Open Source Projects
  • KeaKea
  • Issues
  • #294

Closed
Open
Opened Nov 28, 2018 by Thomas Markwalder@tmarkMaintainer

Linux packet filter send() emits valgrind error

On the first packet send, the linux packet filter emits the following valgrind error:

2018-11-28 10:57:04.527 DEBUG [kea-dhcp4.packets/12342] DHCP4_RESPONSE_DATA [hwtype=1 08:00:27:25:d3:f4], cid=[32:32:32:32], tid=0x91bfb7: responding with packet DHCPOFFER (type 2), packet details: local_address=178.16.1.30:67, remote_address=178.16.1.78:68, msg_type=DHCPOFFER (2), transid=0x91bfb7,
options:
  type=001, len=004: 4294967040 (uint32)
  type=051, len=004: 7200 (uint32)
  type=053, len=001: 2 (uint8)
  type=054, len=004: 178.16.1.30
  type=061, len=004: 32:32:32:32
==12342== Syscall param socketcall.sendto(to.sa_data) points to uninitialised byte(s)
==12342==    at 0x80FADC3: ??? (syscall-template.S:81)
==12342==    by 0x64E2C21: isc::dhcp::PktFilterLPF::send(isc::dhcp::Iface const&, unsigned short, boost::shared_ptr<isc::dhcp::Pkt4> const&) (in /labspace/var/kea/radius-150-b2/lib/libkea-dhcp++.so.9.0.0)
==12342==    by 0x64478CB: isc::dhcp::IfaceMgr::send(boost::shared_ptr<isc::dhcp::Pkt4> const&) (in /labspace/var/kea/radius-150-b2/lib/libkea-dhcp++.so.9.0.0)
==12342==    by 0x4AC873: isc::dhcp::Dhcpv4Srv::sendPacket(boost::shared_ptr<isc::dhcp::Pkt4> const&) (in /labspace/var/kea/radius-150-b2/sbin/kea-dhcp4)
==12342==    by 0x4B0167: isc::dhcp::Dhcpv4Srv::processPacketBufferSend(boost::shared_ptr<isc::hooks::CalloutHandle>&, boost::shared_ptr<isc::dhcp::Pkt4>&) (in /labspace/var/kea/radius-150-b2/sbin/kea-dhcp4)
==12342==    by 0x4ACD98: isc::dhcp::Dhcpv4Srv::run_one() (in /labspace/var/kea/radius-150-b2/sbin/kea-dhcp4)
==12342==    by 0x4AC890: isc::dhcp::Dhcpv4Srv::run() (in /labspace/var/kea/radius-150-b2/sbin/kea-dhcp4)
==12342==    by 0x4833F5: main (in /labspace/var/kea/radius-150-b2/sbin/kea-dhcp4)
==12342==  Address 0x1ffefffa58 is on thread 1's stack
==12342==  in frame #1, created by isc::dhcp::PktFilterLPF::send(isc::dhcp::Iface const&, unsigned short, boost::shared_ptr<isc::dhcp::Pkt4> const&) (???:)
==12342== 

It may not be harmful but it is distraction and something any user doing testing would point out. The fix is a one liner:

diff --git a/src/lib/dhcp/pkt_filter_lpf.cc b/src/lib/dhcp/pkt_filter_lpf.cc
index ba64b00..158754d 100644
--- a/src/lib/dhcp/pkt_filter_lpf.cc
+++ b/src/lib/dhcp/pkt_filter_lpf.cc
@@ -305,6 +305,7 @@ PktFilterLPF::send(const Iface& iface, uint16_t sockfd, const Pkt4Ptr& pkt) {
     buf.writeData(pkt->getBuffer().getData(), pkt->getBuffer().getLength());

     sockaddr_ll sa;
+    memset(&sa, 0x0, sizeof(sa));
     sa.sll_family = AF_PACKET;
     sa.sll_ifindex = iface.getIndex();
     sa.sll_protocol = htons(ETH_P_IP);
To upload designs, you'll need to enable LFS and have admin enable hashed storage. More information
Assignee
Assign to
Kea1.5-beta2
Milestone
Kea1.5-beta2 (Past due)
Assign milestone
Time tracking
None
Due date
None
Reference: isc-projects/kea#294