Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
1fa0e5f8
T
Third Party Openssl
项目概览
OpenHarmony
/
Third Party Openssl
1 年多 前同步成功
通知
10
Star
18
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party Openssl
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
1fa0e5f8
编写于
7月 16, 2016
作者:
A
Andy Polyakov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
crypto/LPdir_win.c: rationalize temporary allocations.
Reviewed-by:
N
Richard Levitte
<
levitte@openssl.org
>
上级
46ea8e61
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
41 addition
and
31 deletion
+41
-31
crypto/LPdir_win.c
crypto/LPdir_win.c
+41
-31
未找到文件。
crypto/LPdir_win.c
浏览文件 @
1fa0e5f8
...
...
@@ -76,11 +76,9 @@ const char *LP_find_file(LP_DIR_CTX **ctx, const char *directory)
errno
=
0
;
if
(
*
ctx
==
NULL
)
{
const
char
*
extdir
=
directory
;
char
*
extdirbuf
=
NULL
;
size_t
dirlen
=
strlen
(
directory
);
if
(
dirlen
==
0
)
{
if
(
dirlen
==
0
||
dirlen
>
INT_MAX
-
3
)
{
errno
=
ENOENT
;
return
0
;
}
...
...
@@ -92,45 +90,35 @@ const char *LP_find_file(LP_DIR_CTX **ctx, const char *directory)
}
memset
(
*
ctx
,
0
,
sizeof
(
**
ctx
));
if
(
directory
[
dirlen
-
1
]
!=
'*'
)
{
extdirbuf
=
(
char
*
)
malloc
(
dirlen
+
3
);
if
(
extdirbuf
==
NULL
)
{
free
(
*
ctx
);
*
ctx
=
NULL
;
errno
=
ENOMEM
;
return
0
;
}
if
(
directory
[
dirlen
-
1
]
!=
'/'
&&
directory
[
dirlen
-
1
]
!=
'\\'
)
extdir
=
strcat
(
strcpy
(
extdirbuf
,
directory
),
"/*"
);
else
extdir
=
strcat
(
strcpy
(
extdirbuf
,
directory
),
"*"
);
}
if
(
sizeof
(
TCHAR
)
!=
sizeof
(
char
))
{
TCHAR
*
wdir
=
NULL
;
/* len_0 denotes string length *with* trailing 0 */
size_t
index
=
0
,
len_0
=
strlen
(
extdir
)
+
1
;
size_t
index
=
0
,
len_0
=
dirlen
+
1
;
#ifdef LP_MULTIBYTE_AVAILABLE
int
sz
=
0
;
UINT
cp
;
do
{
# ifdef CP_UTF8
if
((
sz
=
MultiByteToWideChar
((
cp
=
CP_UTF8
),
0
,
extdir
,
len_0
,
if
((
sz
=
MultiByteToWideChar
((
cp
=
CP_UTF8
),
0
,
directory
,
len_0
,
NULL
,
0
))
>
0
||
GetLastError
()
!=
ERROR_NO_UNICODE_TRANSLATION
)
break
;
# endif
sz
=
MultiByteToWideChar
((
cp
=
CP_ACP
),
0
,
extdir
,
len_0
,
sz
=
MultiByteToWideChar
((
cp
=
CP_ACP
),
0
,
directory
,
len_0
,
NULL
,
0
);
}
while
(
0
);
if
(
sz
>
0
)
{
wdir
=
_alloca
(
sz
*
sizeof
(
TCHAR
));
if
(
!
MultiByteToWideChar
(
cp
,
0
,
extdir
,
len_0
,
wdir
,
sz
))
{
if
(
extdirbuf
!=
NULL
)
{
free
(
extdirbuf
);
}
/*
* allocate two additional characters in case we need to
* concatenate asterisk, |sz| covers trailing '\0'!
*/
wdir
=
_alloca
((
sz
+
2
)
*
sizeof
(
TCHAR
));
if
(
!
MultiByteToWideChar
(
cp
,
0
,
directory
,
len_0
,
(
WCHAR
*
)
wdir
,
sz
))
{
free
(
*
ctx
);
*
ctx
=
NULL
;
errno
=
EINVAL
;
...
...
@@ -139,17 +127,39 @@ const char *LP_find_file(LP_DIR_CTX **ctx, const char *directory)
}
else
#endif
{
wdir
=
_alloca
(
len_0
*
sizeof
(
TCHAR
));
sz
=
len_0
;
/*
* allocate two additional characters in case we need to
* concatenate asterisk, |sz| covers trailing '\0'!
*/
wdir
=
_alloca
((
sz
+
2
)
*
sizeof
(
TCHAR
));
for
(
index
=
0
;
index
<
len_0
;
index
++
)
wdir
[
index
]
=
(
TCHAR
)
extdir
[
index
];
wdir
[
index
]
=
(
TCHAR
)
directory
[
index
];
}
sz
--
;
/* wdir[sz] is trailing '\0' now */
if
(
wdir
[
sz
-
1
]
!=
TEXT
(
'*'
))
{
if
(
wdir
[
sz
-
1
]
!=
TEXT
(
'/'
)
&&
wdir
[
sz
-
1
]
!=
TEXT
(
'\\'
))
_tcscpy
(
wdir
+
sz
,
TEXT
(
"/*"
));
else
_tcscpy
(
wdir
+
sz
,
TEXT
(
"*"
));
}
(
*
ctx
)
->
handle
=
FindFirstFile
(
wdir
,
&
(
*
ctx
)
->
ctx
);
}
else
{
(
*
ctx
)
->
handle
=
FindFirstFile
((
TCHAR
*
)
extdir
,
&
(
*
ctx
)
->
ctx
);
}
if
(
extdirbuf
!=
NULL
)
{
free
(
extdirbuf
);
if
(
directory
[
dirlen
-
1
]
!=
'*'
)
{
char
*
buf
=
_alloca
(
dirlen
+
3
);
strcpy
(
buf
,
directory
);
if
(
buf
[
dirlen
-
1
]
!=
'/'
&&
buf
[
dirlen
-
1
]
!=
'\\'
)
strcpy
(
buf
+
dirlen
,
"/*"
);
else
strcpy
(
buf
+
dirlen
,
"*"
);
directory
=
buf
;
}
(
*
ctx
)
->
handle
=
FindFirstFile
((
TCHAR
*
)
directory
,
&
(
*
ctx
)
->
ctx
);
}
if
((
*
ctx
)
->
handle
==
INVALID_HANDLE_VALUE
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录