mirror of
https://github.com/postgres/postgres.git
synced 2025-06-02 00:01:40 -04:00
Remove support for (insecure) crypt authentication.
This breaks compatibility with pre-7.2 versions.
This commit is contained in:
parent
ba4eb01554
commit
53a5026b5c
@ -1,4 +1,4 @@
|
|||||||
<!-- $PostgreSQL: pgsql/doc/src/sgml/client-auth.sgml,v 1.109 2008/10/23 13:31:09 mha Exp $ -->
|
<!-- $PostgreSQL: pgsql/doc/src/sgml/client-auth.sgml,v 1.110 2008/10/28 12:10:42 mha Exp $ -->
|
||||||
|
|
||||||
<chapter id="client-authentication">
|
<chapter id="client-authentication">
|
||||||
<title>Client Authentication</title>
|
<title>Client Authentication</title>
|
||||||
@ -315,24 +315,6 @@ hostnossl <replaceable>database</replaceable> <replaceable>user</replaceable>
|
|||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term><literal>crypt</></term>
|
|
||||||
<listitem>
|
|
||||||
<note>
|
|
||||||
<para>
|
|
||||||
This option is recommended only for communicating with pre-7.2
|
|
||||||
clients.
|
|
||||||
</para>
|
|
||||||
</note>
|
|
||||||
<para>
|
|
||||||
Require the client to supply a <function>crypt()</>-encrypted
|
|
||||||
password for authentication.
|
|
||||||
<literal>md5</literal> is now recommended over <literal>crypt</>.
|
|
||||||
See <xref linkend="auth-password"> for details.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><literal>password</></term>
|
<term><literal>password</></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
@ -704,9 +686,6 @@ omicron bryanh guest1
|
|||||||
<indexterm>
|
<indexterm>
|
||||||
<primary>MD5</>
|
<primary>MD5</>
|
||||||
</indexterm>
|
</indexterm>
|
||||||
<indexterm>
|
|
||||||
<primary>crypt</>
|
|
||||||
</indexterm>
|
|
||||||
<indexterm>
|
<indexterm>
|
||||||
<primary>password</primary>
|
<primary>password</primary>
|
||||||
<secondary>authentication</secondary>
|
<secondary>authentication</secondary>
|
||||||
@ -714,21 +693,15 @@ omicron bryanh guest1
|
|||||||
|
|
||||||
<para>
|
<para>
|
||||||
The password-based authentication methods are <literal>md5</>,
|
The password-based authentication methods are <literal>md5</>,
|
||||||
<literal>crypt</>, and <literal>password</>. These methods operate
|
and <literal>password</>. These methods operate
|
||||||
similarly except for the way that the password is sent across the
|
similarly except for the way that the password is sent across the
|
||||||
connection: respectively, MD5-hashed, crypt-encrypted, and clear-text.
|
connection: respectively, MD5-hashed and clear-text.
|
||||||
A limitation is that the <literal>crypt</> method does not work with
|
|
||||||
passwords that have been encrypted in <structname>pg_authid</structname>.
|
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
If you are at all concerned about password
|
If you are at all concerned about password
|
||||||
<quote>sniffing</> attacks then <literal>md5</> is preferred, with
|
<quote>sniffing</> attacks then <literal>md5</> is preferred.
|
||||||
<literal>crypt</> to be used only if you must support pre-7.2
|
Plain <literal>password</> should always be avoided if possible.
|
||||||
clients. Plain <literal>password</> should be avoided especially for
|
|
||||||
connections over the open Internet (unless you use <acronym>SSL</acronym>,
|
|
||||||
<acronym>SSH</>, or another
|
|
||||||
communications security wrapper around the connection).
|
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<!-- $PostgreSQL: pgsql/doc/src/sgml/protocol.sgml,v 1.73 2008/02/08 18:18:05 tgl Exp $ -->
|
<!-- $PostgreSQL: pgsql/doc/src/sgml/protocol.sgml,v 1.74 2008/10/28 12:10:42 mha Exp $ -->
|
||||||
|
|
||||||
<chapter id="protocol">
|
<chapter id="protocol">
|
||||||
<title>Frontend/Backend Protocol</title>
|
<title>Frontend/Backend Protocol</title>
|
||||||
@ -295,19 +295,6 @@
|
|||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>AuthenticationCryptPassword</term>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
The frontend must now send a PasswordMessage containing the
|
|
||||||
password encrypted via crypt(3), using the 2-character salt
|
|
||||||
specified in the AuthenticationCryptPassword message. If
|
|
||||||
this is the correct password, the server responds with an
|
|
||||||
AuthenticationOk, otherwise it responds with an ErrorResponse.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>AuthenticationMD5Password</term>
|
<term>AuthenticationMD5Password</term>
|
||||||
<listitem>
|
<listitem>
|
||||||
@ -1531,61 +1518,6 @@ AuthenticationCleartextPassword (B)
|
|||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>
|
|
||||||
AuthenticationCryptPassword (B)
|
|
||||||
</term>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
|
|
||||||
<variablelist>
|
|
||||||
<varlistentry>
|
|
||||||
<term>
|
|
||||||
Byte1('R')
|
|
||||||
</term>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
Identifies the message as an authentication request.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term>
|
|
||||||
Int32(10)
|
|
||||||
</term>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
Length of message contents in bytes, including self.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term>
|
|
||||||
Int32(4)
|
|
||||||
</term>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
Specifies that a crypt()-encrypted password is required.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term>
|
|
||||||
Byte2
|
|
||||||
</term>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
The salt to use when encrypting the password.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>
|
<term>
|
||||||
AuthenticationMD5Password (B)
|
AuthenticationMD5Password (B)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<!-- $PostgreSQL: pgsql/doc/src/sgml/user-manag.sgml,v 1.40 2008/09/08 00:47:40 tgl Exp $ -->
|
<!-- $PostgreSQL: pgsql/doc/src/sgml/user-manag.sgml,v 1.41 2008/10/28 12:10:42 mha Exp $ -->
|
||||||
|
|
||||||
<chapter id="user-manag">
|
<chapter id="user-manag">
|
||||||
<title>Database Roles and Privileges</title>
|
<title>Database Roles and Privileges</title>
|
||||||
@ -215,8 +215,8 @@ CREATE USER <replaceable>name</replaceable>;
|
|||||||
<para>
|
<para>
|
||||||
A password is only significant if the client authentication
|
A password is only significant if the client authentication
|
||||||
method requires the user to supply a password when connecting
|
method requires the user to supply a password when connecting
|
||||||
to the database. The <option>password</>,
|
to the database. The <option>password</> and
|
||||||
<option>md5</>, and <option>crypt</> authentication methods
|
<option>md5</> authentication methods
|
||||||
make use of passwords. Database passwords are separate from
|
make use of passwords. Database passwords are separate from
|
||||||
operating system passwords. Specify a password upon role
|
operating system passwords. Specify a password upon role
|
||||||
creation with <literal>CREATE ROLE
|
creation with <literal>CREATE ROLE
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/libpq/auth.c,v 1.169 2008/10/23 13:31:10 mha Exp $
|
* $PostgreSQL: pgsql/src/backend/libpq/auth.c,v 1.170 2008/10/28 12:10:43 mha Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -230,7 +230,6 @@ auth_failed(Port *port, int status)
|
|||||||
errstr = gettext_noop("Ident authentication failed for user \"%s\"");
|
errstr = gettext_noop("Ident authentication failed for user \"%s\"");
|
||||||
break;
|
break;
|
||||||
case uaMD5:
|
case uaMD5:
|
||||||
case uaCrypt:
|
|
||||||
case uaPassword:
|
case uaPassword:
|
||||||
errstr = gettext_noop("password authentication failed for user \"%s\"");
|
errstr = gettext_noop("password authentication failed for user \"%s\"");
|
||||||
break;
|
break;
|
||||||
@ -373,11 +372,6 @@ ClientAuthentication(Port *port)
|
|||||||
status = recv_and_check_password_packet(port);
|
status = recv_and_check_password_packet(port);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case uaCrypt:
|
|
||||||
sendAuthRequest(port, AUTH_REQ_CRYPT);
|
|
||||||
status = recv_and_check_password_packet(port);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case uaPassword:
|
case uaPassword:
|
||||||
sendAuthRequest(port, AUTH_REQ_PASSWORD);
|
sendAuthRequest(port, AUTH_REQ_PASSWORD);
|
||||||
status = recv_and_check_password_packet(port);
|
status = recv_and_check_password_packet(port);
|
||||||
@ -426,8 +420,6 @@ sendAuthRequest(Port *port, AuthRequest areq)
|
|||||||
/* Add the salt for encrypted passwords. */
|
/* Add the salt for encrypted passwords. */
|
||||||
if (areq == AUTH_REQ_MD5)
|
if (areq == AUTH_REQ_MD5)
|
||||||
pq_sendbytes(&buf, port->md5Salt, 4);
|
pq_sendbytes(&buf, port->md5Salt, 4);
|
||||||
else if (areq == AUTH_REQ_CRYPT)
|
|
||||||
pq_sendbytes(&buf, port->cryptSalt, 2);
|
|
||||||
|
|
||||||
#if defined(ENABLE_GSS) || defined(ENABLE_SSPI)
|
#if defined(ENABLE_GSS) || defined(ENABLE_SSPI)
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
|
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
|
||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $PostgreSQL: pgsql/src/backend/libpq/crypt.c,v 1.75 2008/09/15 12:32:56 mha Exp $
|
* $PostgreSQL: pgsql/src/backend/libpq/crypt.c,v 1.76 2008/10/28 12:10:43 mha Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -53,14 +53,6 @@ md5_crypt_verify(const Port *port, const char *role, char *client_pass)
|
|||||||
if (shadow_pass == NULL || *shadow_pass == '\0')
|
if (shadow_pass == NULL || *shadow_pass == '\0')
|
||||||
return STATUS_ERROR;
|
return STATUS_ERROR;
|
||||||
|
|
||||||
/* We can't do crypt with MD5 passwords */
|
|
||||||
if (isMD5(shadow_pass) && port->hba->auth_method == uaCrypt)
|
|
||||||
{
|
|
||||||
ereport(LOG,
|
|
||||||
(errmsg("cannot use authentication method \"crypt\" because password is MD5-encrypted")));
|
|
||||||
return STATUS_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Compare with the encrypted or plain password depending on the
|
* Compare with the encrypted or plain password depending on the
|
||||||
* authentication method being used for this connection.
|
* authentication method being used for this connection.
|
||||||
@ -106,14 +98,6 @@ md5_crypt_verify(const Port *port, const char *role, char *client_pass)
|
|||||||
pfree(crypt_pwd2);
|
pfree(crypt_pwd2);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case uaCrypt:
|
|
||||||
{
|
|
||||||
char salt[3];
|
|
||||||
|
|
||||||
strlcpy(salt, port->cryptSalt, sizeof(salt));
|
|
||||||
crypt_pwd = crypt(shadow_pass, salt);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
default:
|
||||||
if (isMD5(shadow_pass))
|
if (isMD5(shadow_pass))
|
||||||
{
|
{
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/libpq/hba.c,v 1.171 2008/10/27 20:04:45 mha Exp $
|
* $PostgreSQL: pgsql/src/backend/libpq/hba.c,v 1.172 2008/10/28 12:10:43 mha Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -847,8 +847,6 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline)
|
|||||||
parsedline->auth_method = uaReject;
|
parsedline->auth_method = uaReject;
|
||||||
else if (strcmp(token, "md5") == 0)
|
else if (strcmp(token, "md5") == 0)
|
||||||
parsedline->auth_method = uaMD5;
|
parsedline->auth_method = uaMD5;
|
||||||
else if (strcmp(token, "crypt") == 0)
|
|
||||||
parsedline->auth_method = uaCrypt;
|
|
||||||
else if (strcmp(token, "pam") == 0)
|
else if (strcmp(token, "pam") == 0)
|
||||||
#ifdef USE_PAM
|
#ifdef USE_PAM
|
||||||
parsedline->auth_method = uaPAM;
|
parsedline->auth_method = uaPAM;
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.565 2008/09/23 20:35:38 momjian Exp $
|
* $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.566 2008/10/28 12:10:43 mha Exp $
|
||||||
*
|
*
|
||||||
* NOTES
|
* NOTES
|
||||||
*
|
*
|
||||||
@ -323,7 +323,7 @@ static int initMasks(fd_set *rmask);
|
|||||||
static void report_fork_failure_to_client(Port *port, int errnum);
|
static void report_fork_failure_to_client(Port *port, int errnum);
|
||||||
static enum CAC_state canAcceptConnections(void);
|
static enum CAC_state canAcceptConnections(void);
|
||||||
static long PostmasterRandom(void);
|
static long PostmasterRandom(void);
|
||||||
static void RandomSalt(char *cryptSalt, char *md5Salt);
|
static void RandomSalt(char *md5Salt);
|
||||||
static void signal_child(pid_t pid, int signal);
|
static void signal_child(pid_t pid, int signal);
|
||||||
static void SignalSomeChildren(int signal, bool only_autovac);
|
static void SignalSomeChildren(int signal, bool only_autovac);
|
||||||
|
|
||||||
@ -1808,7 +1808,7 @@ ConnCreate(int serverFd)
|
|||||||
* fork, not after. Else the postmaster's random sequence won't get
|
* fork, not after. Else the postmaster's random sequence won't get
|
||||||
* advanced, and all backends would end up using the same salt...
|
* advanced, and all backends would end up using the same salt...
|
||||||
*/
|
*/
|
||||||
RandomSalt(port->cryptSalt, port->md5Salt);
|
RandomSalt(port->md5Salt);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -3910,49 +3910,20 @@ dummy_handler(SIGNAL_ARGS)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* CharRemap: given an int in range 0..61, produce textual encoding of it
|
|
||||||
* per crypt(3) conventions.
|
|
||||||
*/
|
|
||||||
static char
|
|
||||||
CharRemap(long ch)
|
|
||||||
{
|
|
||||||
if (ch < 0)
|
|
||||||
ch = -ch;
|
|
||||||
ch = ch % 62;
|
|
||||||
|
|
||||||
if (ch < 26)
|
|
||||||
return 'A' + ch;
|
|
||||||
|
|
||||||
ch -= 26;
|
|
||||||
if (ch < 26)
|
|
||||||
return 'a' + ch;
|
|
||||||
|
|
||||||
ch -= 26;
|
|
||||||
return '0' + ch;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* RandomSalt
|
* RandomSalt
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
RandomSalt(char *cryptSalt, char *md5Salt)
|
RandomSalt(char *md5Salt)
|
||||||
{
|
{
|
||||||
long rand = PostmasterRandom();
|
long rand;
|
||||||
|
|
||||||
cryptSalt[0] = CharRemap(rand % 62);
|
|
||||||
cryptSalt[1] = CharRemap(rand / 62);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* It's okay to reuse the first random value for one of the MD5 salt
|
|
||||||
* bytes, since only one of the two salts will be sent to the client.
|
|
||||||
* After that we need to compute more random bits.
|
|
||||||
*
|
|
||||||
* We use % 255, sacrificing one possible byte value, so as to ensure that
|
* We use % 255, sacrificing one possible byte value, so as to ensure that
|
||||||
* all bits of the random() value participate in the result. While at it,
|
* all bits of the random() value participate in the result. While at it,
|
||||||
* add one to avoid generating any null bytes.
|
* add one to avoid generating any null bytes.
|
||||||
*/
|
*/
|
||||||
|
rand = PostmasterRandom();
|
||||||
md5Salt[0] = (rand % 255) + 1;
|
md5Salt[0] = (rand % 255) + 1;
|
||||||
rand = PostmasterRandom();
|
rand = PostmasterRandom();
|
||||||
md5Salt[1] = (rand % 255) + 1;
|
md5Salt[1] = (rand % 255) + 1;
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
* Interface to hba.c
|
* Interface to hba.c
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* $PostgreSQL: pgsql/src/include/libpq/hba.h,v 1.50 2008/10/23 13:31:10 mha Exp $
|
* $PostgreSQL: pgsql/src/include/libpq/hba.h,v 1.51 2008/10/28 12:10:44 mha Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -22,7 +22,6 @@ typedef enum UserAuth
|
|||||||
uaTrust,
|
uaTrust,
|
||||||
uaIdent,
|
uaIdent,
|
||||||
uaPassword,
|
uaPassword,
|
||||||
uaCrypt,
|
|
||||||
uaMD5,
|
uaMD5,
|
||||||
uaGSS,
|
uaGSS,
|
||||||
uaSSPI,
|
uaSSPI,
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
|
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
|
||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $PostgreSQL: pgsql/src/include/libpq/libpq-be.h,v 1.67 2008/09/15 12:32:57 mha Exp $
|
* $PostgreSQL: pgsql/src/include/libpq/libpq-be.h,v 1.68 2008/10/28 12:10:44 mha Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -123,7 +123,6 @@ typedef struct Port
|
|||||||
*/
|
*/
|
||||||
HbaLine *hba;
|
HbaLine *hba;
|
||||||
char md5Salt[4]; /* Password salt */
|
char md5Salt[4]; /* Password salt */
|
||||||
char cryptSalt[2]; /* Password salt */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Information that really has no business at all being in struct Port,
|
* Information that really has no business at all being in struct Port,
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
|
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
|
||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $PostgreSQL: pgsql/src/include/libpq/pqcomm.h,v 1.108 2008/01/01 19:45:58 momjian Exp $
|
* $PostgreSQL: pgsql/src/include/libpq/pqcomm.h,v 1.109 2008/10/28 12:10:44 mha Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -153,7 +153,7 @@ extern bool Db_user_namespace;
|
|||||||
#define AUTH_REQ_KRB4 1 /* Kerberos V4. Not supported any more. */
|
#define AUTH_REQ_KRB4 1 /* Kerberos V4. Not supported any more. */
|
||||||
#define AUTH_REQ_KRB5 2 /* Kerberos V5 */
|
#define AUTH_REQ_KRB5 2 /* Kerberos V5 */
|
||||||
#define AUTH_REQ_PASSWORD 3 /* Password */
|
#define AUTH_REQ_PASSWORD 3 /* Password */
|
||||||
#define AUTH_REQ_CRYPT 4 /* crypt password */
|
#define AUTH_REQ_CRYPT 4 /* crypt password. Not supported any more. */
|
||||||
#define AUTH_REQ_MD5 5 /* md5 password */
|
#define AUTH_REQ_MD5 5 /* md5 password */
|
||||||
#define AUTH_REQ_SCM_CREDS 6 /* transfer SCM credentials */
|
#define AUTH_REQ_SCM_CREDS 6 /* transfer SCM credentials */
|
||||||
#define AUTH_REQ_GSS 7 /* GSSAPI without wrap() */
|
#define AUTH_REQ_GSS 7 /* GSSAPI without wrap() */
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/interfaces/libpq/fe-auth.c,v 1.137 2008/01/31 18:58:30 tgl Exp $
|
* $PostgreSQL: pgsql/src/interfaces/libpq/fe-auth.c,v 1.138 2008/10/28 12:10:44 mha Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -40,10 +40,6 @@
|
|||||||
#include <pwd.h>
|
#include <pwd.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_CRYPT_H
|
|
||||||
#include <crypt.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "libpq-fe.h"
|
#include "libpq-fe.h"
|
||||||
#include "fe-auth.h"
|
#include "fe-auth.h"
|
||||||
#include "libpq/md5.h"
|
#include "libpq/md5.h"
|
||||||
@ -787,14 +783,6 @@ pg_password_sendauth(PGconn *conn, const char *password, AuthRequest areq)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case AUTH_REQ_CRYPT:
|
|
||||||
{
|
|
||||||
char salt[3];
|
|
||||||
|
|
||||||
strlcpy(salt, conn->cryptSalt, sizeof(salt));
|
|
||||||
crypt_pwd = crypt(password, salt);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case AUTH_REQ_PASSWORD:
|
case AUTH_REQ_PASSWORD:
|
||||||
/* discard const so we can assign it */
|
/* discard const so we can assign it */
|
||||||
crypt_pwd = (char *) password;
|
crypt_pwd = (char *) password;
|
||||||
@ -938,8 +926,12 @@ pg_fe_sendauth(AuthRequest areq, PGconn *conn)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
case AUTH_REQ_MD5:
|
|
||||||
case AUTH_REQ_CRYPT:
|
case AUTH_REQ_CRYPT:
|
||||||
|
printfPQExpBuffer(&conn->errorMessage,
|
||||||
|
libpq_gettext("Crypt authentication not supported\n"));
|
||||||
|
return STATUS_ERROR;
|
||||||
|
|
||||||
|
case AUTH_REQ_MD5:
|
||||||
case AUTH_REQ_PASSWORD:
|
case AUTH_REQ_PASSWORD:
|
||||||
conn->password_needed = true;
|
conn->password_needed = true;
|
||||||
if (conn->pgpass == NULL || conn->pgpass[0] == '\0')
|
if (conn->pgpass == NULL || conn->pgpass[0] == '\0')
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/interfaces/libpq/fe-connect.c,v 1.364 2008/10/27 09:42:31 mha Exp $
|
* $PostgreSQL: pgsql/src/interfaces/libpq/fe-connect.c,v 1.365 2008/10/28 12:10:44 mha Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -1674,15 +1674,6 @@ keep_going: /* We will come back to here until there is
|
|||||||
return PGRES_POLLING_READING;
|
return PGRES_POLLING_READING;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (areq == AUTH_REQ_CRYPT)
|
|
||||||
{
|
|
||||||
if (pqGetnchar(conn->cryptSalt,
|
|
||||||
sizeof(conn->cryptSalt), conn))
|
|
||||||
{
|
|
||||||
/* We'll come back when there are more data */
|
|
||||||
return PGRES_POLLING_READING;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#if defined(ENABLE_GSS) || defined(ENABLE_SSPI)
|
#if defined(ENABLE_GSS) || defined(ENABLE_SSPI)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
|
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
|
||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $PostgreSQL: pgsql/src/interfaces/libpq/libpq-int.h,v 1.135 2008/10/27 09:42:31 mha Exp $
|
* $PostgreSQL: pgsql/src/interfaces/libpq/libpq-int.h,v 1.136 2008/10/28 12:10:44 mha Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -340,7 +340,6 @@ struct pg_conn
|
|||||||
int be_pid; /* PID of backend --- needed for cancels */
|
int be_pid; /* PID of backend --- needed for cancels */
|
||||||
int be_key; /* key of backend --- needed for cancels */
|
int be_key; /* key of backend --- needed for cancels */
|
||||||
char md5Salt[4]; /* password salt received from backend */
|
char md5Salt[4]; /* password salt received from backend */
|
||||||
char cryptSalt[2]; /* password salt received from backend */
|
|
||||||
pgParameterStatus *pstatus; /* ParameterStatus data */
|
pgParameterStatus *pstatus; /* ParameterStatus data */
|
||||||
int client_encoding; /* encoding id */
|
int client_encoding; /* encoding id */
|
||||||
bool std_strings; /* standard_conforming_strings */
|
bool std_strings; /* standard_conforming_strings */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user