小编lij*_*ert的帖子

Ncurses/C/C++:使用getstr()并防止溢出(必须有更好的方法来执行此操作)

我目前正在进入我的第一个完整的C++项目,并且我遇到了Ncurses.

getstr()需要一个char数组作为输入,但是有了这个,就没有办法防止缓冲区溢出.让我假装我正在使用此输入来获取名称.我的代码将是以下内容:

int main(){
    char* nameTemp = new char[160];
    initscr();
    getstr(nameTemp);
    endwin();
    delete nameTemp;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是如果用户决定使用超过160个字符作为他的名字,会发生什么?我收到错误,程序失败.除了创建巨大的Char数组之外,有没有办法解决程序中的这种致命缺陷?谢谢.

注意:我正在使用带有g ++的Ubuntu 12.04

c c++ ncurses buffer-overflow

3
推荐指数
2
解决办法
6078
查看次数

标签 统计

buffer-overflow ×1

c ×1

c++ ×1

ncurses ×1