Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Gpdb
提交
f7a3d742
G
Gpdb
项目概览
Greenplum
/
Gpdb
通知
7
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
Gpdb
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
f7a3d742
编写于
12月 05, 2002
作者:
B
Bruce Momjian
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Clearify variables names so it is clear which variable is the
client-supplied password and which is from pg_shadow.
上级
44ab596b
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
22 addition
and
22 deletion
+22
-22
src/backend/libpq/crypt.c
src/backend/libpq/crypt.c
+20
-20
src/include/libpq/crypt.h
src/include/libpq/crypt.h
+2
-2
未找到文件。
src/backend/libpq/crypt.c
浏览文件 @
f7a3d742
...
...
@@ -9,7 +9,7 @@
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Header: /cvsroot/pgsql/src/backend/libpq/crypt.c,v 1.5
0 2002/12/05 18:39:43
momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/libpq/crypt.c,v 1.5
1 2002/12/05 18:52:42
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -29,15 +29,15 @@
int
md5_crypt_verify
(
const
Port
*
port
,
const
char
*
user
,
char
*
pg
pass
)
md5_crypt_verify
(
const
Port
*
port
,
const
char
*
user
,
char
*
client_
pass
)
{
char
*
passwd
=
NULL
,
char
*
shadow_pass
=
NULL
,
*
valuntil
=
NULL
,
*
crypt_pwd
;
int
retval
=
STATUS_ERROR
;
List
**
line
;
List
*
token
;
char
*
crypt_
pgpass
=
pg
pass
;
char
*
crypt_
client_pass
=
client_
pass
;
if
((
line
=
get_user_line
(
user
))
==
NULL
)
return
STATUS_ERROR
;
...
...
@@ -46,17 +46,17 @@ md5_crypt_verify(const Port *port, const char *user, char *pgpass)
token
=
lnext
(
lnext
(
*
line
));
if
(
token
)
{
passwd
=
lfirst
(
token
);
shadow_pass
=
lfirst
(
token
);
token
=
lnext
(
token
);
if
(
token
)
valuntil
=
lfirst
(
token
);
}
if
(
passwd
==
NULL
||
*
passwd
==
'\0'
)
if
(
shadow_pass
==
NULL
||
*
shadow_pass
==
'\0'
)
return
STATUS_ERROR
;
/* We can't do crypt with pg_shadow MD5 passwords */
if
(
isMD5
(
passwd
)
&&
port
->
auth_method
==
uaCrypt
)
if
(
isMD5
(
shadow_pass
)
&&
port
->
auth_method
==
uaCrypt
)
{
elog
(
LOG
,
"Password is stored MD5 encrypted. "
"'crypt' auth method cannot be used."
);
...
...
@@ -71,10 +71,10 @@ md5_crypt_verify(const Port *port, const char *user, char *pgpass)
{
case
uaMD5
:
crypt_pwd
=
palloc
(
MD5_PASSWD_LEN
+
1
);
if
(
isMD5
(
passwd
))
if
(
isMD5
(
shadow_pass
))
{
/* pg_shadow already encrypted, only do salt */
if
(
!
EncryptMD5
(
passwd
+
strlen
(
"md5"
),
if
(
!
EncryptMD5
(
shadow_pass
+
strlen
(
"md5"
),
(
char
*
)
port
->
md5Salt
,
sizeof
(
port
->
md5Salt
),
crypt_pwd
))
{
...
...
@@ -87,7 +87,7 @@ md5_crypt_verify(const Port *port, const char *user, char *pgpass)
/* pg_shadow plain, double-encrypt */
char
*
crypt_pwd2
=
palloc
(
MD5_PASSWD_LEN
+
1
);
if
(
!
EncryptMD5
(
passwd
,
port
->
user
,
strlen
(
port
->
user
),
if
(
!
EncryptMD5
(
shadow_pass
,
port
->
user
,
strlen
(
port
->
user
),
crypt_pwd2
))
{
pfree
(
crypt_pwd
);
...
...
@@ -109,26 +109,26 @@ md5_crypt_verify(const Port *port, const char *user, char *pgpass)
char
salt
[
3
];
StrNCpy
(
salt
,
port
->
cryptSalt
,
3
);
crypt_pwd
=
crypt
(
passwd
,
salt
);
crypt_pwd
=
crypt
(
shadow_pass
,
salt
);
break
;
}
default:
if
(
isMD5
(
passwd
))
if
(
isMD5
(
shadow_pass
))
{
/* Encrypt user-supplied password to match MD5 in pg_shadow */
crypt_
pg
pass
=
palloc
(
MD5_PASSWD_LEN
+
1
);
if
(
!
EncryptMD5
(
pg
pass
,
port
->
user
,
strlen
(
port
->
user
),
crypt_
pg
pass
))
crypt_
client_
pass
=
palloc
(
MD5_PASSWD_LEN
+
1
);
if
(
!
EncryptMD5
(
client_
pass
,
port
->
user
,
strlen
(
port
->
user
),
crypt_
client_
pass
))
{
pfree
(
crypt_
pg
pass
);
pfree
(
crypt_
client_
pass
);
return
STATUS_ERROR
;
}
}
crypt_pwd
=
passwd
;
crypt_pwd
=
shadow_pass
;
break
;
}
if
(
strcmp
(
crypt_
pg
pass
,
crypt_pwd
)
==
0
)
if
(
strcmp
(
crypt_
client_
pass
,
crypt_pwd
)
==
0
)
{
/*
* Password OK, now check to be sure we are not past valuntil
...
...
@@ -150,8 +150,8 @@ md5_crypt_verify(const Port *port, const char *user, char *pgpass)
if
(
port
->
auth_method
==
uaMD5
)
pfree
(
crypt_pwd
);
if
(
crypt_
pgpass
!=
pg
pass
)
pfree
(
crypt_
pg
pass
);
if
(
crypt_
client_pass
!=
client_
pass
)
pfree
(
crypt_
client_
pass
);
return
retval
;
}
src/include/libpq/crypt.h
浏览文件 @
f7a3d742
...
...
@@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: crypt.h,v 1.2
3 2002/12/05 18:39
:43 momjian Exp $
* $Id: crypt.h,v 1.2
4 2002/12/05 18:52
:43 momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -23,7 +23,7 @@
extern
int
md5_crypt_verify
(
const
Port
*
port
,
const
char
*
user
,
char
*
pg
pass
);
char
*
client_
pass
);
extern
bool
md5_hash
(
const
void
*
buff
,
size_t
len
,
char
*
hexsum
);
extern
bool
CheckMD5Pwd
(
char
*
passwd
,
char
*
storedpwd
,
char
*
seed
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录