[bug report] openwrt 下realpath问题
FredyVia opened this issue · 5 comments
FredyVia commented
[bug report] openwrt 下realpath问题
FredyVia commented
表现:dogcom在openwrt中同时指定logpath,此时log会写入conf文件
realpath 在待转换文件为绝对路径,且不存在时,结果为第一次转换的结果,或者为空值
FredyVia commented
应该是openwrt 的 c库有问题,跟linux下不一样
这是测试程序
#include <stdlib.h>
#include <limits.h>
#include <stdio.h>
int main() {
char path_tmp[PATH_MAX];
//测试相对路径文件不存在时
memset(path_tmp, '\0', sizeof(path_tmp));
realpath("../somefile_not_exists", path_tmp);
printf("文件不存在时的结果:%s\n", path_tmp);
// 1.测试文件存在时
memset(path_tmp, '\0', sizeof(path_tmp));
realpath("/tmp/somefile_exists", path_tmp);
printf("文件存在时的结果:%s\n", path_tmp);
// 测试绝对路径文件不存在时,是否改变准备存放结果的变量:path_tmp
memset(path_tmp, '\0', sizeof(path_tmp));
printf("测试绝对路径文件不存在时,与上次测试相比是否改变准备存放结果的变量:path_tmp");
realpath("/tmp/somefile_not_exists1", path_tmp);
printf("%s\n", path_tmp);
return 0;
}
FredyVia commented
不知道openwrt下怎么写 #ifdef,或者全部都判断下转换结果是否为空,为空则使用原值。
FredyVia commented
这是musl libc库的问题,glibc没有这个问题
FredyVia commented
musl>=1.2.2 已经修复该问题,只是oepnwrt 21.02 使用了旧版本的musl libc库(1.2.1),openwrt master 分支也是用的修复后的1.2.2,详细见:
https://git.musl-libc.org/cgit/musl/tree/src/misc/realpath.c?h=v1.2.1
https://git.musl-libc.org/cgit/musl/commit/src/misc/realpath.c?id=29ff7599a448232f2527841c2362643d246cee36