]> git.ipfire.org Git - thirdparty/systemd.git/commit
resolve: slightly optimize dns_answer_add() 18105/head
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 29 Dec 2020 14:50:54 +0000 (23:50 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 29 Dec 2020 19:14:22 +0000 (04:14 +0900)
commitae45e1a3832fbb6c96707687e42f0b4aaab52c9b
tree3ad0081a36a07fccb24908c20d3902308ef8fb4b
parentb652cccab9ed4091ec347f6e924be131105279e9
resolve: slightly optimize dns_answer_add()

Previously, dns_answer_add() was O(n^2).
With this change dns_packet_extract() becomes ~15 times faster for some
extremal case.

Before:
```
$ time ./fuzz-dns-packet ~/downloads/clusterfuzz-testcase-minimized-fuzz-dns-packet-5631106733047808
/home/watanabe/downloads/clusterfuzz-testcase-minimized-fuzz-dns-packet-5631106733047808... ok

real    0m15.453s
user    0m15.430s
sys     0m0.007s
```

After:
```
$ time ./fuzz-dns-packet ~/downloads/clusterfuzz-testcase-minimized-fuzz-dns-packet-5631106733047808
/home/watanabe/downloads/clusterfuzz-testcase-minimized-fuzz-dns-packet-5631106733047808... ok

real    0m0.831s
user    0m0.824s
sys     0m0.006s
```

Hopefully fixes oss-fuzz#19227.
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19227
src/resolve/resolved-dns-answer.c
src/resolve/resolved-dns-answer.h
src/resolve/resolved-dns-rr.c
src/resolve/resolved-dns-rr.h
test/fuzz/fuzz-dns-packet/oss-fuzz-19227 [new file with mode: 0644]