C中的va_list可能存在缓冲区溢出漏洞? [英] possible buffer overflow vulnerability for va_list in C?

查看:107
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆