diff options
author | Florian Weimer <fweimer@redhat.com> | 2023-11-21 16:45:35 +0100 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2023-11-21 16:46:18 +0100 |
commit | 64e4acf24da15c11cb83f933947df3b2e8a700cd (patch) | |
tree | b3d8e27747379f2b9e4007740f706a63225387f5 /stdlib/Makefile | |
parent | 55364e1f7dfab372f0710513c4d1c967c4965f71 (diff) | |
download | glibc-64e4acf24da15c11cb83f933947df3b2e8a700cd.tar.gz glibc-64e4acf24da15c11cb83f933947df3b2e8a700cd.tar.xz glibc-64e4acf24da15c11cb83f933947df3b2e8a700cd.zip |
stdlib: The qsort implementation needs to use heapsort in more cases
The existing logic avoided internal stack overflow. To avoid a denial-of-service condition with adversarial input, it is necessary to fall over to heapsort if tail-recursing deeply, too, which does not result in a deep stack of pending partitions. The new test stdlib/tst-qsort5 is based on Douglas McIlroy's paper on this subject. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Diffstat (limited to 'stdlib/Makefile')
-rw-r--r-- | stdlib/Makefile | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/stdlib/Makefile b/stdlib/Makefile index 48688f6a27..6194d1cb22 100644 --- a/stdlib/Makefile +++ b/stdlib/Makefile @@ -215,6 +215,7 @@ tests := \ tst-qsort \ tst-qsort2 \ tst-qsort3 \ + tst-qsort5 \ tst-quick_exit \ tst-rand48 \ tst-rand48-2 \ @@ -512,3 +513,5 @@ $(objpfx)tst-setcontext3.out: tst-setcontext3.sh $(objpfx)tst-setcontext3 '$(run-program-env)' '$(test-program-prefix-after-env)' \ $(common-objpfx)stdlib/; \ $(evaluate-test) + +$(objpfx)tst-qsort5: $(libm) |