C中的va_list可能存在缓冲区溢出漏洞? [英] possible buffer overflow vulnerability for va_list in C?
本文介绍了C中的va_list可能存在缓冲区溢出漏洞?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下代码:
int ircsocket_print(char *message, ...)
{
char buffer[512];
int iError;
va_list va;
va_start(va, message);
vsprintf(buffer, message, va);
va_end(va);
send(ircsocket_connection, buffer, strlen(buffer), 0);
return 1;
}
我想知道此代码是否易于通过为变量列表提供大小大于512的char数组来缓冲溢出?如果是这样-我该如何解决?
And I wanted to know if this code is vulerable to buffer overflows by providing char arrays with a size > 512 to the variables list? And if so - How can I fix this?
谢谢.
推荐答案
是的,它很容易受到攻击.
Yes, it is vulnerable.
只需使用vsnprintf
即可:
vsnprintf(buffer, sizeof(buffer), message, va);
这篇关于C中的va_list可能存在缓冲区溢出漏洞?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文