CWE-462: Duplicate Key in Associative List (Alist) 关联列表中的重复键

 

 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

CERT C++ Secure Coding Section 10 - Environment (ENV)

属于

977

SFP Secondary Cluster: Design

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值