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

这篇文章主要介绍了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; } 

以上就是C语言安全编码之数组索引位的合法范围的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » C语言