【发布时间】:2021-03-08 13:42:07
【问题描述】:
希望您有愉快的一天; 所以我有以下代码,我想知道它是否会在某些时候以某种方式溢出::
static void * myalloc(size_t len) {
void * p = malloc(len);
if (p == NULL) {
fprintf(stderr, "end of memory\n");
exit(1);
}
return p;
}
static void * copy_buf(void * buf, uint32_t count, uint32_t be) {
uint32_t * p = NULL;
if (buf != NULL) {
p = myalloc(count * 4);
memcpy(p, buf, count * 4);
}
// more code
return p;
}
如果它没有溢出,是否会有其他原因导致它溢出,我的意思是如果变量发生了变化。或者参数改变了(当然不是数据类型,而是它们的值) 这个问题看起来像memcpy overflow boundary exploit? (smashing the stack) 所以我希望它得到同样的反应:)
感谢您的帮助,完整的源代码要大得多(超过一个文件,每个文件超过 2000 行代码),但这是我关心的部分之一......
祝你有美好的一天。
【问题讨论】:
-
-
@Bodo 什么值会导致这种情况......我不是一个优秀的 c 程序员,还没有进入安全编程领域,这是我的第一个大学项目,遗憾的是他们没有想要里面有错误!
标签: c overflow buffer-overflow integer-overflow