c - 在 C 中使用 realpath() 时潜在的缓冲区溢出
问题描述
我正在阅读与 C 中的安全编码相关的链接。它包含以下段落:
在 C 和 C++ 编程语言中,一些函数将字符串作为输入。示例包括 realpath()、syslog() 和 getopt()。当此类函数被注入大量输入缓冲区时,可能会发生缓冲区溢出攻击。因此,一个好的编码器将确定特定程序所需的此类输入字符串的最大可能长度,并在调用 realpath()、syslog() 和 getopt() 函数之前适当地缩短输入字符串。
以realpath()
函数签名为例:
char *realpath(const char *path, char *resolved_path);
根据函数签名,当有人调用它时,他们会为path
参数分配并填充内存。如果为结果分配的内存resolved_path
不够大,可能会导致溢出。这个分析正确吗?我不确定为什么我上面给出的链接说由于大量输入缓冲区导致缓冲区溢出。
解决方案
推荐阅读
- ruby - 你能用纯红宝石做参数化/下划线吗?(不是骆驼化“恒定化”)
- assembly - 需要帮助调试汇编代码(HCS 12)
- prolog - 递归回溯如何在 Prolog 中工作
- android - 自定义原生模块在升级到反应原生 0.61 后停止在 android 上工作
- python - 在没有 FLATTEN 或任何内置函数的 python 中查找单个数组中的所有嵌套数组
- python - 同时分配 numpy/torch 轴的多个不同切片
- angular - 流星框架 1.8 是否支持最新版本的 Angular 8 或 7?
- python - 使用 flask_restful 构建 RESTApi 时出错
- python - django.core.exceptions.ImproperlyConfigured: DJANGO_SETTINGS_MODULE 或在访问设置之前调用 settings.configure()。
- opendaylight - 我无法通过网络访问 OpenDayLight 11