[Bug 283799] tcpdump (14.2+) endian-swaps uid when parsing pflog data
Date: Thu, 02 Jan 2025 22:10:29 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=283799
Joseph Mingrone <jrm@freebsd.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |kp@freebsd.org
--- Comment #2 from Joseph Mingrone <jrm@freebsd.org> ---
[CC: kp@FreeSBD.org who has a better understanding of pf.]
Hello, and thank you for reporting.
hdr->uid is now defined as nd_uint32_t in contrib/tcpdump/pflog.h [0], so I
/thought/ we needed GET_BE_U_4. The equivalent upstream code (which has
unfortunately diverged from ours) also uses GET_BE_U_4 when printing the uid
[1].
I'm not a pf user, so I'm not clear on the expected output before and after
this change. This is what I see now:
% id -u
1001
% sudo service pf start
Enabling pf.
% sudo service pflog start
Starting pflog.
% cat /etc/pf.conf
if="em0"
block out log on $if inet proto icmp all
% ping google.com # (in another vt)
% sudo tcpdump -n -e -ttt -i pflog0
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on pflog0, link-type PFLOG (OpenBSD pflog file), snapshot length
262144 bytes
00:00:00.000000 rule 0/0(match) [uid 0]: block out on em0: 192.168.2.2 >
142.250.80.46: ICMP echo request, id 40305, seq 0, length 64
Could you share a recipe to demonstrate the problem?
--
[0]
https://github.com/freebsd/freebsd-src/blob/main/contrib/tcpdump/pflog.h#L118-L151
[1]
https://github.com/the-tcpdump-group/tcpdump/blob/master/print-pflog.c#L424-L432
--
You are receiving this mail because:
You are the assignee for the bug.