首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >委托人增删设计错误

委托人增删设计错误

作者头像
Al1ex
发布2021-07-21 17:44:11
发布2021-07-21 17:44:11
2260
举报
文章被收录于专栏:网络安全攻防网络安全攻防
文章前言

在智能合约中数组0地址有时候用于存储某一类具备特殊意义的数据,但是有时候也用0地址来表示查询无果的情形,如果将这两者混用或误用,则可能导致逻辑设计的严重问题,本篇文章将对此进行简单介绍。

问题描述

智能合约中的add和remove两个函数用于增加和移除受益人,这里的depositariesIndex是depositaries数组的索引值:

但是在以下位置处,合约要求添加的委托人地址索引为0:

同样的问题存在于以下位置,不允许删除索引为0的受益人:

所以说这里原来的设计目的是索引为0则表示该受益人不存在,但是在增加收益人时却在索引为0的位置存放的受益人,从而导致索引为0的受益人地址覆盖,而对应的索引为0的受益人地址不可被删除~

安全建议

在索引为0的地址不存放任何受益人地址信息,将所有存储的数据往后移动一个索引位置:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 七芒星实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章前言
  • 问题描述
  • 安全建议
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档