软件编程
位置:首页>> 软件编程>> C语言>> C语言安全编码之数组索引位的合法范围

C语言安全编码之数组索引位的合法范围

作者:shichen2014  发布时间:2021-12-08 06:09:51 

标签:C语言,安全编码,数组,合法,范围

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;
}
0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com