2015-07-03 61 views
-3

这是我的代码:此代码中是否存在某种安全问题?

void handle(int s) 
{ 
char inbuf[4096];//we defined inbuf as 4096 size 

dup2(s, 0); 
dup2(s, 1); 

setbuf(stdout, NULL); 

alarm(ALARM_TIMEOUT_SEC); 

printf("crackme> "); 

if (NULL == fgets(inbuf, sizeof(inbuf), stdin)) { 
    return; 
} 

right_trim(inbuf); 

if (is_correct(inbuf)) { 
    printf("Good job!\n"); 
} 
} 

,如果有,是什么问题? 关于这个程序的一点解释: 她运行服务器的第一部分 当有人连接到服务器并输入一个输入(我做了一个循环来检查输入的长度) 所以这个函数看着它,如果通过是正确的,那么它的打印“很好”

+2

我相信这是不可能的,因为所有代码都没有显示。 – unwind

+0

我在这个特定的代码片断... –

+0

我不认为这是一个代码审查网站。尝试[代码评论](http://codereview.stackexchange.com/) – Olaf

回答

0

回答题为:是的。使用

void setbuf(FILE *stream, char *buffer); 

由于安全问题而不推荐使用,并且仅出于兼容目的由MSVC保留。 (通过提供mode,以及更多的灵活性)请使用

int setvbuf(FILE *stream, char *buffer, int mode, size_t size); 

这是更安全的,因为缓冲size也被提供并且它返回一个函数值,以指示成功或失败。

相关问题