bsdiff
bsdiff copied to clipboard
Fix split() pivoting to avoid stack overflow from Quicksort worst case.
One such case is 'A' * 1048575 + 'B' + 'A' * 1048575 + 'C'. Demo: gcc -DBSDIFF_EXECUTABLE bsdiff.c -lbz2 -o bsdiff perl -e "print('A'x1048575,'B','A'x1048575,'C')" > big ./bsdiff big big patch
Output before patch: 'Segmentation fault (core dumped)'. Output after patch: No crash, outputs 85 byte file 'patch'.
Details: http://crbug.com/605565#c11