#1865·stb

Gemini 可能存在的两个问题(或可能是幻觉)

作者: thealgebraist创建于 2025年12月13日更新于 2026年8月22日

test.c 1. TGA 加载器: 未初始化内存泄漏(安全风险) 在 stbi__tga_load 函数中,在加载标准(非索引、非 RLE)图像时,代码忽略了 stbi__getn 的返回值。 问题: 如果文件提前结束(被截断),stbi__getn 返回 0(失败),但代码继续运行而不出错。由于图像缓冲区(tga_data)是通过 stbi__malloc 分配的,它没有被零初始化。该函数将返回一个包含随机堆内存(垃圾)的缓冲区,其中缺少了文件数据,这是一个潜在的信息泄漏。 位置: 第 1562 行。 ---- 2. HDR 加载器: 通过不正确的循环重置导致数据损坏 在 stbi__hdr_load 函数中,代码尝试处理一个特定的错误情况,其中一行看起来像是跑长码编码(RLE),但不是。如果此检查失败,代码将重置像素 i 和行 j 索引,并跳回标签 main_decode_loop。 问题: 重置 j = 0 是不正确的,如果解析器已经在图像中更深的行中处理(例如行 5)。它会迫使解析器将当前数据写入图像缓冲区的第一行,覆盖有效数据,并使图像的底部未初始化。 位置: 第 1890-1893 行。