auth.patch
text/plain
*** backend/libpq/auth.c.orig Sat Jun 16 01:01:50 2001
--- backend/libpq/auth.c Sat Jun 16 01:00:42 2001
***************
*** 700,706 ****
static int
checkPassword(Port *port, char *user, char *password)
{
! if (port->auth_arg[0] != '\0')
return verify_password(port, user, password);
return crypt_verify(port, user, password);
--- 700,706 ----
static int
checkPassword(Port *port, char *user, char *password)
{
! if (port->auth_arg[0] != '\0' && strcmp(port->auth_arg, "pg_shadow") != 0)
return verify_password(port, user, password);
return crypt_verify(port, user, password);
*** backend/libpq/crypt.c.orig Sat Jun 16 01:01:56 2001
--- backend/libpq/crypt.c Sat Jun 16 01:00:42 2001
***************
*** 260,266 ****
char *passwd,
*valuntil,
! *crypt_pwd;
int retval = STATUS_ERROR;
AbsoluteTime vuntil,
current;
--- 260,267 ----
char *passwd,
*valuntil,
! *client_passwd,
! *server_passwd;
int retval = STATUS_ERROR;
AbsoluteTime vuntil,
current;
***************
*** 282,291 ****
* authentication method being used for this connection.
*/
! crypt_pwd =
! (port->auth_method == uaCrypt ? crypt(passwd, port->salt) : passwd);
! if (!strcmp(pgpass, crypt_pwd))
{
/*
--- 283,325 ----
* authentication method being used for this connection.
*/
! /*
! * default behaviours
! * - host dbname x.x.x.x x.x.x.x password
! * client passwd - clear text
! * pg_shadow passwd - stored as clear text
! */
!
! client_passwd = (char *)pgpass;
! server_passwd = passwd;
!
! /*
! * - host dbname x.x.x.x x.x.x.x crypt
! * client passwd - encrypted by client
! * pg_shadow passwd - stored as clear text, encrypted before compare
! */
!
! if (port->auth_method == uaCrypt)
! {
! client_passwd = (char *)pgpass;
! server_passwd = crypt(passwd, port->salt);
! }
!
! /*
! * enhanced behavior
! * - host dbname x.x.x.x x.x.x.x password pg_shadow
! * client passwd - clear text, encrypted before compare
! * pg_shadow passwd - stored as encrypted
! */
!
! if (port->auth_method != uaCrypt &&
! strcmp(port->auth_arg, "pg_shadow") == 0)
! {
! client_passwd = crypt(pgpass, passwd);
! server_passwd = passwd;
! }
! if (!strcmp(client_passwd, server_passwd))
{
/*