识别坏代码味道

函数vulFunc在处理数据时,可能存在栈越界的问题。当row和col的乘积超过BUFLEN定义的大小时,会返回错误,暗示了可能的整数溢出导致栈溢出风险。使用memcpy_s进行内存复制,但未检查data是否为空,尽管有空指针检查,但在其他方面仍存在安全风险。
摘要由CSDN通过智能技术生成

//以下函数vulFunc是对外接口函数,该函数存在什么安全问题
#define  BUFLEN 256

int vulFunc(uint8_t *data, uint32_t row, uint32_t col)
{
    uint_t buf[BUFLEN] = {0};

    if(data == NULL)
    {
        return -1;
    }

    if(row * col > sizeof(buf))
    {
        return -1;
    }

    for(int i = 0; i < row; i++)
    {
        (void*)memcpy_s(&buf[i * col], col, data + i * col, col);
    }
    ... // 数据分析
    return 0;
}

A.  堆内存溢出  B.空指针溢出  C.释放后使用  D.整数溢出,并可导致栈越界

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值