about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/glibc/local-qsort-memory-corruption.patch
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/glibc/local-qsort-memory-corruption.patch')
-rw-r--r--nixpkgs/pkgs/development/libraries/glibc/local-qsort-memory-corruption.patch14
1 files changed, 14 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/glibc/local-qsort-memory-corruption.patch b/nixpkgs/pkgs/development/libraries/glibc/local-qsort-memory-corruption.patch
new file mode 100644
index 000000000000..f7e25c72a61c
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/glibc/local-qsort-memory-corruption.patch
@@ -0,0 +1,14 @@
+diff -rup a/stdlib/qsort.c b/stdlib/qsort.c
+--- a/stdlib/qsort.c	2023-07-31 10:54:16.000000000 -0700
++++ b/stdlib/qsort.c	2024-01-15 09:08:25.596167959 -0800
+@@ -224,7 +224,8 @@ _quicksort (void *const pbase, size_t to
+     while ((run_ptr += size) <= end_ptr)
+       {
+ 	tmp_ptr = run_ptr - size;
+-	while ((*cmp) ((void *) run_ptr, (void *) tmp_ptr, arg) < 0)
++	while (tmp_ptr != base_ptr
++	       && (*cmp) ((void *) run_ptr, (void *) tmp_ptr, arg) < 0)
+ 	  tmp_ptr -= size;
+ 
+ 	tmp_ptr += size;
+