C语言安全编码之数组索引位的合法范围
作者:shichen2014 时间:2021-12-08 06:09:51
C语言中的数组索引必须保证位于合法的范围内!
示例代码如下:
enum {TABLESIZE = 100};
int *table = NULL;
int insert_in_table(int pos, int value) {
if(!table) {
table = (int *)malloc(sizeof(int) *TABLESIZE);
}
if(pos >= TABLESIZE) {
return -1;
}
table[pos] = value;
return 0;
}
其中:pos为int类型,可能为负数,这会导致在数组所引用的内存边界之外进行写入
解决方案如下:
enum {TABLESIZE = 100};
int *table = NULL;
int insert_in_table(size_t pos, int value) {
if(!table) {
table = (int *)malloc(sizeof(int) *TABLESIZE);
}
if(pos >= TABLESIZE) {
return -1;
}
table[pos] = value;
return 0;
}
标签:C语言,安全编码,数组,合法,范围
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Android 中糟糕的AsyncTask
2022-07-09 00:43:35
mybatis QueryWrapper的条件构造之apply、last、select解析
2022-02-12 17:32:51
SpringBoot和Vue.js实现的前后端分离的用户权限管理系统
2023-09-03 14:37:33
基于swing实现窗体拖拽和拉伸
2023-11-12 22:32:40
![](https://img.aspxhome.com/file/2023/2/69082_0s.gif)
C#使用foreach遍历哈希表(hashtable)的方法
2022-10-07 20:00:44
Javaweb基础入门requse原理与使用
2021-10-07 20:55:29
![](https://img.aspxhome.com/file/2023/6/77096_0s.png)
Java实现SMS短信通发送手机验证码案例讲解
2022-05-14 22:37:57
![](https://img.aspxhome.com/file/2023/0/129290_0s.jpg)
Java concurrency之非公平锁_动力节点Java学院整理
2022-07-31 22:04:37
C#从画刷创建画笔的方法
2022-11-22 15:49:17
Java实现定时任务的方法详解
2022-12-30 04:14:00
java web学习_浅谈request对象中get和post的差异
2022-10-28 00:25:20
![](https://img.aspxhome.com/file/2023/2/91122_0s.png)
idea启动springmvc项目时报找不到类的解决方法
2023-11-09 16:51:04
![](https://img.aspxhome.com/file/2023/6/59416_0s.png)
C#事件标准命名规则及说明(包括用作事件类型的委托命名)
2022-02-27 06:57:43
Java Socket编程详解及示例代码
2022-06-29 07:05:27
Java多线程死锁与资源限制操作
2023-08-31 05:54:30
基于Java实现的Dijkstra算法示例
2021-09-17 02:51:13
Android TextWatcher监控EditText中的输入内容并限制其个数
2022-08-18 13:27:41
浅析Java中Apache BeanUtils和Spring BeanUtils的用法
2021-07-10 21:29:15
![](https://img.aspxhome.com/file/2023/4/63324_0s.jpg)
java 实现KMP算法
2022-09-14 15:44:40
![](https://img.aspxhome.com/file/2023/4/83104_0s.gif)
IntelliJ IDEA最佳配置(推荐)
2023-11-17 01:55:44
![](https://img.aspxhome.com/file/2023/1/128831_0s.png)