hashtable: fix environment variable corruption
Only first previously deleted entry was recognized, leading hsearch_r
to think that there was no previously deleted entry. It then conluded
that a free entry was found, even if there were no free entries and it
overwrote a random entry.
This patch makes sure all deleted or free entries are always found and
also introduces constants for the 0 and -1 numbers. Unit tests to excersise a
simple hash table usage and catch the corruption were added.
To trash your environment, simply run this loop:
setenv i 0
while true; do
setenv v_$i $i
setenv v_$i
setexpr i $i + 1
done
Signed-off-by: Roman Kapl <rka@sysgo.com>
This commit is contained in:
1
test/env/Makefile
vendored
1
test/env/Makefile
vendored
@@ -4,3 +4,4 @@
|
||||
|
||||
obj-y += cmd_ut_env.o
|
||||
obj-y += attr.o
|
||||
obj-y += hashtable.o
|
||||
|
||||
Reference in New Issue
Block a user