Overview
Associative lists should always have unique keys,
since having non-unique keys can often be mistaken for
an error.
Consequences
Unspecified.
Exposure
period
- Design: The use of a safe data structure could
be used.
Platform
- Languages: Although alists generally are used
only in languages like Common Lisp - due to the
functionality overlap with hash tables - an alist
could appear in a language like C or C++.
Required
resources
Any
Severity
Medium
Likelihood
of
exploit
Low
Avoidance
and
mitigation
- Design: Use a hash table instead of an alist.
- Design: Use an alist which checks the uniqueness
of hash keys with each entry before inserting the
entry.
Discussion
A duplicate key entry - if the alist is
designed properly - could be used as a constant time
replace function. However, duplicate key entries could
be inserted by mistake. Because of this ambiguity,
duplicate key entries in an association list are not
recommended and should not be allowed.
Examples
In Python:
alist = []
while (foo()):
#now assume there is a string data with a key basename
queue.append(basename,data)
queue.sort()