serenity/AK
Idan Horowitz eb02425ef9 AK: Clear the previous and next pointers of deleted HashTable buckets
Usually the values of the previous and next pointers of deleted buckets
are never used, as they're not part of the main ordered bucket chain,
but if an in-place rehashing is done, which results in the bucket being
turned into a free bucket, the stale pointers will remain, at which
point any item that is inserted into said free-bucket will have either
a stale previous pointer if the HashTable was empty on insertion, or a
stale next pointer, resulting in undefined behaviour.

This commit also includes a new HashMap test that reproduces this issue
2022-06-22 21:53:13 +02:00
..
.clang-tidy Meta: Add basic clang-tidy configuration 2021-11-14 22:52:35 +01:00
AllOf.h AK: Reimplement all_of in terms of find_if 2021-07-24 13:11:13 +04:30
AnyOf.h AK: Implement any_of using common implementation 2021-08-06 23:57:48 +02:00
ArbitrarySizedEnum.h AK: Add an ArbitrarySizedEnum template 2022-03-27 18:54:56 +02:00
Array.h AK+Userland: Rename Array::front/back to first/last 2022-04-06 14:31:52 +02:00
Assertions.h AK: Suppress clang-tidy warning on TODO() 2022-02-21 19:01:16 +02:00
Atomic.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Badge.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Base64.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Base64.h AK+Userland: Make AK::decode_base64 return ErrorOr 2022-01-24 22:36:09 +01:00
BinaryBufferWriter.h
BinaryHeap.h AK: Add missing headers 2021-10-06 23:52:40 +01:00
BinarySearch.h
BitCast.h AK: Use __builtin_bit_cast if available 2021-08-21 13:48:59 +04:30
Bitmap.h AK: Make Bitmap construction OOM-fallible 2022-02-11 17:49:46 +02:00
BitmapView.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
BitStream.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Buffered.h Everywhere: Switch from EnableIf to requires 2022-03-17 22:15:42 -07:00
BuiltinWrappers.h AK+Everywhere: Replace __builtin bit functions 2021-12-21 22:13:51 +01:00
BumpAllocator.h AK: Make BumpAllocator work in multi-threaded environments 2021-10-31 18:43:03 +01:00
ByteBuffer.h AK/ByteBuffer+Everywhere: Handle errors in ByteBuffer::slice() 2022-06-13 15:38:51 +01:00
ByteReader.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
CharacterTypes.h AK: Change static base36 character map to function-local constexpr 2022-02-10 10:22:54 +00:00
Checked.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
CheckedFormatString.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
CircularDeque.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
CircularDuplexStream.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
CircularQueue.h AK: Add non-const iterator for CircularQueue 2022-04-03 09:49:08 -07:00
CMakeLists.txt
Complex.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Concepts.h AK: Add a OneOfIgnoringCV concept 2022-04-20 00:15:23 +04:30
DateConstants.h Everywhere: Deduplicate day/month name constants 2022-03-18 23:48:50 +00:00
DateTimeLexer.h Everywhere: Pass AK::StringView by value 2021-11-11 01:27:46 +01:00
Debug.h.in LibWeb: Add ability to present LibGL framebuffer and add clearing 2022-06-13 21:45:27 +01:00
Demangle.h AK: Remove kfree definition 2022-01-16 11:18:04 +01:00
DisjointChunks.h AK: Skip over initial empty chunks in DisjointChunks 2022-02-27 00:11:14 +03:30
DistinctNumeric.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
DoublyLinkedList.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Endian.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
EnumBits.h
Error.h AK: Add Error::operator==(Error const&) 2022-06-09 22:08:04 +02:00
ExtraMathConstants.h
FileStream.h
Find.h
FixedArray.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
FixedPoint.h AK: Make sure we don't include Math.h or math.h from KERNEL 2022-04-23 10:43:32 -07:00
FlyString.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
FlyString.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Format.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Format.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Forward.h AK+Kernel: Remove RefPtrTraits template param in userspace code 2022-06-15 17:15:04 +02:00
FPControl.h AK: Add a cpp-y, more fine grained version of fenv.h: FPControl.h 2022-05-07 20:27:05 +02:00
Function.h AK: Suppress false positive readability-non-const-parameter in Function 2021-11-14 22:52:35 +01:00
FuzzyMatch.h AK: Add FuzzyMatch header 2022-04-20 18:34:09 +02:00
GenericLexer.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
GenericLexer.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
HashFunctions.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
HashMap.h AK+LibGUI: Pass predicate to *_matching() methods by const reference 2022-05-08 17:02:00 +02:00
HashTable.h AK: Clear the previous and next pointers of deleted HashTable buckets 2022-06-22 21:53:13 +02:00
Hex.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Hex.h AK: Return KString instead of String from encode_hex in the Kernel 2022-02-16 22:21:37 +01:00
IDAllocator.h AK: Use get_random() in IDAllocator 2021-08-30 18:35:36 +02:00
IntegralMath.h AK: Make sure we don't include Math.h or math.h from KERNEL 2022-04-23 10:43:32 -07:00
IntrusiveDetails.h AK: Add missing headers 2021-10-06 23:52:40 +01:00
IntrusiveList.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
IntrusiveListRelaxedConst.h AK+Everywhere: Reduce the number of template parameters of IntrusiveList 2021-09-10 18:05:46 +03:00
IntrusiveRedBlackTree.h AK: Expose RedBlackTree::find_smallest_not_below() 2022-04-21 13:16:56 +02:00
IPv4Address.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
IPv6Address.h AK: Add Kernel namespace to KStrings in AK::IPv6Address 2022-04-17 16:57:52 -07:00
IterationDecision.h
Iterator.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
JsonArray.h Everywhere: Make JSON serialization fallible 2022-02-27 20:37:57 +01:00
JsonArraySerializer.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
JsonObject.h Everywhere: Make JSON serialization fallible 2022-02-27 20:37:57 +01:00
JsonObjectSerializer.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
JsonParser.cpp AK: Fix userland parsing of rounded floating point numbers 2022-02-16 07:22:51 -05:00
JsonParser.h AK: Remove unused String[256] from JsonParser 2022-03-10 18:43:09 +01:00
JsonPath.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
JsonPath.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
JsonValue.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
JsonValue.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
kmalloc.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
kmalloc.h AK+Kernel: Avoid double memory clearing of HashTable buckets 2022-03-15 11:56:46 +01:00
kstdio.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
LEB128.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
LexicalPath.cpp AK: Add LexicalPath::prepend() 2021-11-22 09:03:47 +01:00
LexicalPath.h AK: Add LexicalPath::prepend() 2021-11-22 09:03:47 +01:00
MACAddress.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Math.h AK: Add sqrt(2) and sqrt(1/2) constants 2022-06-14 23:00:52 +02:00
MemMem.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Memory.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
MemoryStream.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
NeverDestroyed.h
NoAllocationGuard.h Everywhere: Use my new serenityos.org e-mail :^) 2022-01-14 11:54:09 +01:00
Noncopyable.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
NonnullOwnPtr.h Revert "AK: Add comparison operators to NonnullOwnPtr" 2022-06-18 13:17:49 +01:00
NonnullOwnPtrVector.h
NonnullPtrVector.h LibWeb: Make reverse iterators work for const NonnullPtrVectors 2022-04-13 19:52:25 +02:00
NonnullRefPtr.h AK+Kernel: Remove RefPtrTraits template param in userspace code 2022-06-15 17:15:04 +02:00
NonnullRefPtrVector.h
NumberFormat.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
NumericLimits.h AK: Use proper type for bool NumericLimits::min and max specialization 2021-11-14 22:52:35 +01:00
Optional.h AK: Allow Optional<T&> to exist 2022-04-04 12:48:31 +02:00
OwnPtr.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Platform.h AK: Allow alignment to cache line size with CACHE_ALIGNED 2022-04-21 13:55:00 +02:00
PrintfImplementation.h AK: Make sure we don't include Math.h or math.h from KERNEL 2022-04-23 10:43:32 -07:00
Ptr32.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Queue.h AK+Everywhere: Reduce the number of template parameters of IntrusiveList 2021-09-10 18:05:46 +03:00
QuickSort.h
Random.cpp
Random.h AK+LibCore: Standardize on AK_OS_MACOS instead of __APPLE__ 2021-09-12 18:31:10 +02:00
RecursionDecision.h AK: Add RecursionDecision 2021-08-07 15:21:58 +02:00
RedBlackTree.h AK: Expose RedBlackTree::find_smallest_not_below() 2022-04-21 13:16:56 +02:00
RefCounted.h AK+Kernel: Remove one_ref_left() footgun 2022-01-11 01:12:16 +01:00
RefCountForwarder.h AK: Add RefCountForwarder<T> 2021-12-09 21:28:52 +01:00
RefPtr.h AK+Kernel: Remove RefPtrTraits template param in userspace code 2022-06-15 17:15:04 +02:00
Result.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
ReverseIterator.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
ScopedValueRollback.h
ScopeGuard.h
ScopeLogger.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
SIMD.h
SIMDExtras.h LibGL+LibSoftGPU: Implement the stencil buffer 2022-01-17 12:49:00 +01:00
SIMDMath.h AK: Add clamp(f32x4, float, float) 2022-05-09 21:49:48 +02:00
Singleton.h AK: Yield while waiting for another thread to initialize a Singleton 2022-01-19 01:28:13 +01:00
SinglyLinkedList.h AK: Add SinglyLinkedList::prepend() 2022-06-10 19:06:46 +01:00
SinglyLinkedListWithCount.h
SourceGenerator.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
SourceLocation.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Span.h AK: Add last() utility function to Span 2022-04-02 21:50:41 +02:00
Stack.h AK: Use unchecked_append in AK::Stack, as we always validate the size 2022-01-05 14:04:18 +01:00
StackInfo.cpp AK: Fix preprocessor OS check 2021-12-12 11:10:34 -08:00
StackInfo.h
Statistics.h AK: Add min and max functions to Statistics 2021-11-06 22:09:25 -07:00
StdLibExtraDetails.h AK: Add a OneOfIgnoringCV concept 2022-04-20 00:15:23 +04:30
StdLibExtras.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Stream.h LibIPC+IPCCompiler+AK: Make IPC value decoders return ErrorOr<void> 2021-11-28 23:14:19 +01:00
String.cpp AK: Add invert_case() and invert_case(StringView) 2022-05-26 21:51:23 +01:00
String.h AK: Add invert_case() and invert_case(StringView) 2022-05-26 21:51:23 +01:00
StringBuilder.cpp AK: Add a try variant of StringBuilder::append_escaped_for_json 2022-02-27 20:37:57 +01:00
StringBuilder.h AK: Add a try variant of StringBuilder::append_escaped_for_json 2022-02-27 20:37:57 +01:00
StringHash.h AK: Define a traits helper for case-insensitive StringView hashing 2022-01-11 00:36:45 +01:00
StringImpl.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
StringImpl.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
StringUtils.cpp AK: Add invert_case() and invert_case(StringView) 2022-05-26 21:51:23 +01:00
StringUtils.h AK: Add invert_case() and invert_case(StringView) 2022-05-26 21:51:23 +01:00
StringView.cpp AK: Add StringView::copy_characters_to_buffer() 2022-04-03 19:15:14 +02:00
StringView.h AK: Add StringView::copy_characters_to_buffer() 2022-04-03 19:15:14 +02:00
TemporaryChange.h
Time.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Time.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Traits.h AK: Add missing include to Traits.h 2022-04-10 19:18:16 +02:00
Trie.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Try.h AK: Mark the error branch of the TRY() macro as unlikely 2022-01-16 02:01:23 +02:00
Tuple.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
TypeCasts.h
TypedTransfer.h AK: Fast path for single-element TypedTransfer::copy 2021-12-17 13:13:00 -08:00
TypeList.h
Types.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
UBSanitizer.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
UFixedBigInt.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
UnicodeUtils.h AK: Remove now-unused AK::UnicodeUtils methods 2022-01-18 15:13:25 +00:00
URL.cpp AK: Make URL ApplicationXWWWFormUrlencoded encoding closer to spec 2022-06-10 22:32:29 +01:00
URL.h AK: Add URL::create_with_help_scheme helper function 2022-04-21 09:12:37 +04:30
URLParser.cpp AK: Don't destructively re-encode query strings in the URL parser 2022-04-10 01:37:45 +02:00
URLParser.h Everywhere: Pass AK::StringView by value 2021-11-11 01:27:46 +01:00
Userspace.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Utf8View.cpp AK: Put invalid UTF8 debug spam behind a flag 2022-04-27 00:02:24 +02:00
Utf8View.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Utf16View.cpp AK: Add a Utf16View::code_unit_offset_of(Utf16CodePointIterator) helper 2022-01-31 21:05:04 +02:00
Utf16View.h AK: Add a Utf16View::code_unit_offset_of(Utf16CodePointIterator) helper 2022-01-31 21:05:04 +02:00
Utf32View.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
UUID.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
UUID.h AK+Kernel: Return KString from UUID::to_string() in the Kernel 2022-02-16 22:21:37 +01:00
Variant.h AK: Use static_cast to cast to base type 2022-05-21 02:18:40 +02:00
Vector.h AK+LibGUI: Pass predicate to *_matching() methods by const reference 2022-05-08 17:02:00 +02:00
Weakable.h AK+Kernel: Remove RefPtrTraits template param in userspace code 2022-06-15 17:15:04 +02:00
WeakPtr.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00