Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Musl
提交
18bca575
T
Third Party Musl
项目概览
OpenHarmony
/
Third Party Musl
11 个月 前同步成功
通知
37
Star
125
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party Musl
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
18bca575
编写于
4月 20, 2011
作者:
R
Rich Felker
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
shadow password fixes: empty fields should read as -1 not 0
上级
b052f13c
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
13 addition
and
7 deletion
+13
-7
src/passwd/getspnam_r.c
src/passwd/getspnam_r.c
+13
-7
未找到文件。
src/passwd/getspnam_r.c
浏览文件 @
18bca575
#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h>
#include <ctype.h>
#include "pwf.h"
/* This implementation support Openwall-style TCB passwords in place of
...
...
@@ -10,6 +11,11 @@
* file. It also avoids any allocation to prevent memory-exhaustion
* attacks via huge TCB shadow files. */
static
long
xatol
(
const
char
*
s
)
{
return
isdigit
(
*
s
)
?
atol
(
s
)
:
-
1
;
}
int
getspnam_r
(
const
char
*
name
,
struct
spwd
*
sp
,
char
*
buf
,
size_t
size
,
struct
spwd
**
res
)
{
char
path
[
20
+
NAME_MAX
];
...
...
@@ -64,25 +70,25 @@ int getspnam_r(const char *name, struct spwd *sp, char *buf, size_t size, struct
*
s
++
=
0
;
sp
->
sp_pwdp
=
s
;
if
(
!
(
s
=
strchr
(
s
,
':'
)))
continue
;
*
s
++
=
0
;
sp
->
sp_lstchg
=
atol
(
s
);
*
s
++
=
0
;
sp
->
sp_lstchg
=
x
atol
(
s
);
if
(
!
(
s
=
strchr
(
s
,
':'
)))
continue
;
*
s
++
=
0
;
sp
->
sp_min
=
atol
(
s
);
*
s
++
=
0
;
sp
->
sp_min
=
x
atol
(
s
);
if
(
!
(
s
=
strchr
(
s
,
':'
)))
continue
;
*
s
++
=
0
;
sp
->
sp_max
=
atol
(
s
);
*
s
++
=
0
;
sp
->
sp_max
=
x
atol
(
s
);
if
(
!
(
s
=
strchr
(
s
,
':'
)))
continue
;
*
s
++
=
0
;
sp
->
sp_warn
=
atol
(
s
);
*
s
++
=
0
;
sp
->
sp_warn
=
x
atol
(
s
);
if
(
!
(
s
=
strchr
(
s
,
':'
)))
continue
;
*
s
++
=
0
;
sp
->
sp_inact
=
atol
(
s
);
*
s
++
=
0
;
sp
->
sp_inact
=
x
atol
(
s
);
if
(
!
(
s
=
strchr
(
s
,
':'
)))
continue
;
*
s
++
=
0
;
sp
->
sp_expire
=
atol
(
s
);
*
s
++
=
0
;
sp
->
sp_expire
=
x
atol
(
s
);
if
(
!
(
s
=
strchr
(
s
,
':'
)))
continue
;
*
s
++
=
0
;
sp
->
sp_flag
=
atol
(
s
);
*
s
++
=
0
;
sp
->
sp_flag
=
x
atol
(
s
);
*
res
=
sp
;
break
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录