#3021·task

SmartJoin 将包含特殊变量名称的相对路径错误地视为特殊路径

作者: znnnnnnn-wil创建于 2026年9月7日更新于 2026年9月7日
标签area: exec

说明

SmartJoin'错误地将含有.ROOT DIR'等特殊可变名称的普通相对路径视为绝对/特殊路径,导致它们绕过基线连接。

你做了什麽?

我用一个正常的相对路径给`SmartJoin'打电话,其目录名称恰好包含一个特殊的可变名称:

开始 SmartJoin( base, filepath.Join ("project.ROOT DIR", "file.txt")) (中文(简体) ).


表明这一问题的最低限度回归测试是:

开始
func 测试SmartJoinRelativePath 包含特殊变量Name (t *testing.T) {
碱:= filepath.Join ("碱","dir")
路径 := filepath.Join ("project.ROOT DIR","file.txt")

获得 := SmartJoin(基地,路径)
想要:=文件路径。 加入( 碱基, 路径)

如果有的话! = 想要{
t.Fatalf ("SmartJoin () () = %q, 想要%q", 得到, 想要)
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

可以使用:

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? 进行测试 ./ 内部/ filepathex - 运行的测试SmartJoinRelativePath 包含特殊变量Name - counts=1


你想怎样?

这条道路应当被视为一条正常的相对道路,并与 " 基地 " 相结合。

换句话说:

开始
SmartJoin( base, filepath.Join ("project.ROOT DIR", "file.txt")) (中文(简体) ).

应返回以下结果:

开始 filepath.Join( 碱, “ project. ROOT DIR”, “ file.txt” )


发生了什么事?

" SmartJoin " 返回输入的相对路径不变,而不是与 " base " 连接。

同一行为似乎也影响到包含下列内容的相对路径组件:

- '.ROOT DIR'(英语:.
- " .塔斯克菲莱 - 迪尔 "
- . . . . . . . . .

从对实施情况的审视来看,这可能是由使用 " 弦 " 的 " 特别指定 " 造成的。 包含用于检测特殊变量。 因此,即使变量实际上不是QQQ模板表达式的一部分,包含其中一种字符串的普通目录名称也可以相配. .

这可能导致正常的相对路径绕过碱基-指针相接,并且相对于一个出乎意料的位置,包括用于任务目录的路径,包括多腾v文件,或指纹相关逻辑.

翻译:

主机(385e5ad92af02877b6d7cf9dcc963b5ed916e70a)

操作系统

Windows amd64, 前进 1. 26.5

QQ 实验已启用

无