Commit graph

9 commits

Author SHA1 Message Date
thebeing
e5a29578ad Fix a vulnerability in the timsort algorithm where an algorithmic problem caused an
invariant to no longer hold for certain inputs, potentially leading to a read beyond
an array boundary (result in a segfault under our implementation).
See http://www.envisage-project.eu/proving-android-java-and-python-sorting-algorithm-is-broken-and-how-to-fix-it/
for an in-depth explanation of the problem. Also: ‘Yeah!’ for formal verification!


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@38391 72102866-910b-0410-8b05-ffd578937521
2015-03-10 11:43:03 +00:00
rfm
1483924463 leak detection improvements
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@37003 72102866-910b-0410-8b05-ffd578937521
2013-08-22 15:44:54 +00:00
thebeing
c217368f95 Fix typo.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@35593 72102866-910b-0410-8b05-ffd578937521
2012-09-23 08:06:59 +00:00
thebeing
6891e5699d More timsort bugfixes (seems to work much better now)
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@35583 72102866-910b-0410-8b05-ffd578937521
2012-09-20 18:54:15 +00:00
thebeing
1cc86b3e67 Fix bugs in the timsort implementation.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@35582 72102866-910b-0410-8b05-ffd578937521
2012-09-20 14:29:16 +00:00
rfm
31634bffde Changes to restore sorting functiionality
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@35579 72102866-910b-0410-8b05-ffd578937521
2012-09-20 09:32:00 +00:00
rfm
7c94635f24 fix goto's breaking exception handler
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@35575 72102866-910b-0410-8b05-ffd578937521
2012-09-19 16:40:22 +00:00
rfm
8ec0deff44 formatting/coding style fixups
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@35574 72102866-910b-0410-8b05-ffd578937521
2012-09-19 14:20:01 +00:00
thebeing
b9b63476ef Completely overhaul how we do sorting in -base. GSSorting.h now defines an
interface that can be used for all sorting tasks in the library. The actual sort
algorithms to use are now plugable. Timsort is the new default sorting
algorithm, the existing algorithms, shellsort and quicksort, can still be
selected using a configure switch.

Also implement the new NSComparator (blocks) based sorting and insertion index
searching methods for NSMutableArray and NSArray.



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@35573 72102866-910b-0410-8b05-ffd578937521
2012-09-19 13:31:09 +00:00