ndr: avoid excessive reallocing in pull_string_array
authorDouglas Bagnall <douglas.bagnall@catalyst.net.nz>
Thu, 30 Jul 2020 00:06:10 +0000 (12:06 +1200)
committerAndrew Bartlett <abartlet@samba.org>
Mon, 3 Aug 2020 02:51:35 +0000 (02:51 +0000)
commit9148f38c203c3481a43ef6d39ea9313dfa1c1bea
tree48aba4c058649c95f4cde3f16e92a071a77d2d60
parent9bf331b46a70189f2f63a5223a31eae64a9854db
ndr: avoid excessive reallocing in pull_string_array

Before, talloc_realloc() was being called n times for an array of
length n. This could be very expensive on long string arrays since it
is reasonable to assume each realloc moves O(n) bytes.

This addresses at least one OSS-Fuzz bug, making a timing out test case
100 times faster. Credit to OSS-Fuzz.

REF: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19706

Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Noel Power <npower@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
librpc/ndr/ndr_string.c