Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell11
提交
56d48a98
D
dragonwell11
项目概览
openanolis
/
dragonwell11
通知
7
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell11
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
56d48a98
编写于
4月 16, 2014
作者:
M
mduigou
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8040332: fixpath must explicitly quote empty string parameters.
Reviewed-by: ihse
上级
5f5e864c
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
23 addition
and
18 deletion
+23
-18
common/src/fixpath.c
common/src/fixpath.c
+23
-18
未找到文件。
common/src/fixpath.c
浏览文件 @
56d48a98
...
...
@@ -109,7 +109,7 @@ char *replace_cygdrive_cygwin(char const *in)
void
append
(
char
**
b
,
size_t
*
bl
,
size_t
*
u
,
char
*
add
,
size_t
addlen
)
{
while
(
(
addlen
+*
u
+
1
)
>
*
bl
)
{
while
((
addlen
+*
u
+
1
)
>
*
bl
)
{
*
bl
*=
2
;
*
b
=
(
char
*
)
realloc
(
*
b
,
*
bl
);
}
...
...
@@ -118,7 +118,7 @@ void append(char **b, size_t *bl, size_t *u, char *add, size_t addlen)
}
/*
* Creates a new string from in where the first occur
a
nce of sub is
* Creates a new string from in where the first occur
re
nce of sub is
* replaced by rep.
*/
char
*
replace_substring
(
char
*
in
,
char
*
sub
,
char
*
rep
)
...
...
@@ -246,7 +246,7 @@ char *fix_at_file(char const *in)
}
buffer
=
(
char
*
)
malloc
(
buflen
);
while
((
blocklen
=
fread
(
block
,
1
,
sizeof
(
block
),
atin
))
>
0
)
{
while
((
blocklen
=
fread
(
block
,
1
,
sizeof
(
block
),
atin
))
>
0
)
{
append
(
&
buffer
,
&
buflen
,
&
used
,
block
,
blocklen
);
}
buffer
[
used
]
=
0
;
...
...
@@ -280,16 +280,21 @@ char * quote_arg(char const * in_arg) {
char
*
current
=
quoted
;
int
pass
;
if
(
strpbrk
(
in_arg
,
"
\t\n\v\r\\\"
"
)
==
NULL
)
{
if
(
strlen
(
in_arg
)
==
0
)
{
// empty string? explicitly quote it.
return
_strdup
(
"
\"\"
"
);
}
if
(
strpbrk
(
in_arg
,
"
\t\n\v\r\\\"
"
)
==
NULL
)
{
return
_strdup
(
in_arg
);
}
// process the arg twice. Once to calculate the size and then to copy it.
for
(
pass
=
1
;
pass
<=
2
;
pass
++
)
{
for
(
pass
=
1
;
pass
<=
2
;
pass
++
)
{
char
const
*
arg
=
in_arg
;
// initial "
if
(
pass
==
2
)
{
if
(
pass
==
2
)
{
*
current
=
'\"'
;
}
current
++
;
...
...
@@ -328,7 +333,7 @@ char * quote_arg(char const * in_arg) {
*
current
=
*
arg
;
}
current
++
;
}
while
(
*
arg
++
!=
'\0'
);
}
while
(
*
arg
++
!=
'\0'
);
// allocate the buffer
if
(
pass
==
1
)
{
...
...
@@ -362,7 +367,7 @@ int main(int argc, char const ** argv)
if
(
getenv
(
"DEBUG_FIXPATH"
)
!=
NULL
)
{
char
const
*
cmdline
=
GetCommandLine
();
fprintf
(
stderr
,
"fixpath input line >%s<
\n
"
,
strstr
(
cmdline
,
argv
[
1
]));
fprintf
(
stderr
,
"fixpath input line >%s<
\n
"
,
strstr
(
cmdline
,
argv
[
1
]));
}
if
(
argv
[
1
][
1
]
==
'c'
&&
argv
[
1
][
2
]
==
'\0'
)
{
...
...
@@ -399,7 +404,7 @@ int main(int argc, char const ** argv)
}
rc
=
SetEnvironmentVariable
(
var
,
val
);
if
(
!
rc
)
{
if
(
!
rc
)
{
// Could not set var for some reason. Try to report why.
const
int
msg_len
=
80
+
var_len
+
strlen
(
val
);
char
*
msg
=
(
char
*
)
alloca
(
msg_len
);
...
...
@@ -422,7 +427,7 @@ int main(int argc, char const ** argv)
// handle command and it's args.
while
(
i
<
argc
)
{
char
const
*
replaced
=
replace_cygdrive
(
argv
[
i
]);
if
(
replaced
[
0
]
==
'@'
)
{
if
(
replaced
[
0
]
==
'@'
)
{
// Found at-file! Fix it!
replaced
=
fix_at_file
(
replaced
);
}
...
...
@@ -433,7 +438,7 @@ int main(int argc, char const ** argv)
// determine the length of the line
line
=
NULL
;
// args
for
(
i
=
cmd
;
i
<
argc
;
i
++
)
{
for
(
i
=
cmd
;
i
<
argc
;
i
++
)
{
line
+=
(
ptrdiff_t
)
strlen
(
argv
[
i
]);
}
// spaces and null
...
...
@@ -443,7 +448,7 @@ int main(int argc, char const ** argv)
// copy in args.
current
=
line
;
for
(
i
=
cmd
;
i
<
argc
;
i
++
)
{
for
(
i
=
cmd
;
i
<
argc
;
i
++
)
{
ptrdiff_t
len
=
strlen
(
argv
[
i
]);
if
(
i
!=
cmd
)
{
*
current
++
=
' '
;
...
...
@@ -457,16 +462,16 @@ int main(int argc, char const ** argv)
fprintf
(
stderr
,
"fixpath converted line >%s<
\n
"
,
line
);
}
if
(
cmd
==
argc
)
{
if
(
cmd
==
argc
)
{
if
(
getenv
(
"DEBUG_FIXPATH"
)
!=
NULL
)
{
fprintf
(
stderr
,
"fixpath no command provided!
\n
"
);
}
exit
(
0
);
}
ZeroMemory
(
&
si
,
sizeof
(
si
));
ZeroMemory
(
&
si
,
sizeof
(
si
));
si
.
cb
=
sizeof
(
si
);
ZeroMemory
(
&
pi
,
sizeof
(
pi
));
ZeroMemory
(
&
pi
,
sizeof
(
pi
));
fflush
(
stderr
);
fflush
(
stdout
);
...
...
@@ -481,14 +486,14 @@ int main(int argc, char const ** argv)
NULL
,
&
si
,
&
pi
);
if
(
!
rc
)
{
if
(
!
rc
)
{
// Could not start process for some reason. Try to report why:
report_error
(
"Could not start process!"
);
exit
(
126
);
}
WaitForSingleObject
(
pi
.
hProcess
,
INFINITE
);
GetExitCodeProcess
(
pi
.
hProcess
,
&
exitCode
);
WaitForSingleObject
(
pi
.
hProcess
,
INFINITE
);
GetExitCodeProcess
(
pi
.
hProcess
,
&
exitCode
);
if
(
getenv
(
"DEBUG_FIXPATH"
)
!=
NULL
)
{
for
(
i
=
0
;
i
<
num_files_to_delete
;
++
i
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录