ID: 462 类型:基础 | 状态:未完成 |
描述
关联列表中的重复键可能导致非唯一键被误认为是错误
扩展描述
一个重复的键条目——如果alist设计正确的话——可以用作一个常量时间替换函数。但是,重复的键条目可能会被错误地插入。由于这种模糊性,建议不要在关联列表中使用重复的键条目,也不应允许使用重复的键条目。
相关视图
与“研究层面”视图(CWE-1000)相关
与“开发层面”视图(CWE-699)相关
引入模式
阶段 | 说明 |
架构与设计 | |
实现 |
应用平台
语言
C (出现的可能性不确定)
C++ (出现的可能性不确定)
Java (出现的可能性不确定)
C# (出现的可能性不确定)
后果
范围 | 冲击 | 可能性 |
其它 | 技术冲击: 质量下降;根据上下文而变 |
被利用的可能性:
低
示例
例1
下面的代码将数据添加到列表中,然后尝试对数据进行排序。
(问题代码)
Example Language: Python
alist = []
while (foo()): #now assume there is a string data with a key basename
queue.append(basename,data)
queue.sort()
因为basename不一定是唯一的,所以它可能不会按照人们希望的方式进行排序。.
应对措施
阶段: 架构与设计 使用哈希表替代线性列表 |
阶段: 架构与设计 在插入条目之前,使用一个清单检查每个条目的哈希键的唯一性。 |
种属
关系 | 类型 | ID | 名称 |
属于 | 744 | CERT C Secure Coding Standard (2008) Chapter 11 - Environment (ENV) | |
属于 | 878 | ||
属于 | 977 |