fprintf函数操作字符串引入BUG

来源:互联网 发布:ios9 数据流量 开关 编辑:程序博客网 时间:2024/05/21 16:38

fprintf函数不安全的用法

问题描述
将wifi名称如下: test%*^()_,随后发现此名称没有生效,且无法进行修改

问题原因
使用的MTK方案,跟进驱动配置文件后看到如下异常:
驱动配置文件截图

跟踪代码
随后跟进代码

char ssid[32] = {0};... ...//将SSID输入到文件fprintf(to_fp, ssid);... ...

fprintf函数原型是int printf(const char *format, ...);
当第二个参数中出现%且没有第三个参数的时候,最后结果就会与预期不同,将代码修改如下即可:

char ssid[32] = {0};... ...//将SSID输入到文件fprintf(to_fp, "%s", ssid);... ...

后续
在另外的一个平台测试fprintf这种用法发现没有问题,应该是C库版本导致的,需要进一步跟进两个版本的源码才能知道根本原因。

原创粉丝点击