mirror of
https://github.com/postgres/postgres.git
synced 2025-07-23 03:21:12 +03:00
Clean up md5.c to make it clearer that it is a frontend-and-backend
module. Don't rely on backend palloc semantics; in fact, best to not use palloc at all, rather than #define'ing it to malloc, because that just encourages errors of omission. Bug spotted by Volkan YAZICI, but I went further than he did to fix it.
This commit is contained in:
@ -14,24 +14,13 @@
|
|||||||
* 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/backend/libpq/md5.c,v 1.30 2005/10/17 16:24:19 tgl Exp $
|
* $PostgreSQL: pgsql/src/backend/libpq/md5.c,v 1.31 2005/10/20 13:54:08 tgl Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* This is intended to be used in both frontend and backend, so use c.h */
|
||||||
|
#include "c.h"
|
||||||
|
|
||||||
#if ! defined(FRONTEND)
|
|
||||||
#include "postgres.h"
|
|
||||||
#include "libpq/crypt.h"
|
#include "libpq/crypt.h"
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef FRONTEND
|
|
||||||
#include "postgres_fe.h"
|
|
||||||
#include "libpq/crypt.h"
|
|
||||||
|
|
||||||
#undef palloc
|
|
||||||
#define palloc malloc
|
|
||||||
#undef pfree
|
|
||||||
#define pfree free
|
|
||||||
#endif /* FRONTEND */
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -325,9 +314,12 @@ pg_md5_encrypt(const char *passwd, const char *salt, size_t salt_len,
|
|||||||
char *buf)
|
char *buf)
|
||||||
{
|
{
|
||||||
size_t passwd_len = strlen(passwd);
|
size_t passwd_len = strlen(passwd);
|
||||||
char *crypt_buf = palloc(passwd_len + salt_len);
|
char *crypt_buf = malloc(passwd_len + salt_len);
|
||||||
bool ret;
|
bool ret;
|
||||||
|
|
||||||
|
if (!crypt_buf)
|
||||||
|
return false;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Place salt at the end because it may be known by users trying to crack
|
* Place salt at the end because it may be known by users trying to crack
|
||||||
* the MD5 output.
|
* the MD5 output.
|
||||||
@ -338,7 +330,7 @@ pg_md5_encrypt(const char *passwd, const char *salt, size_t salt_len,
|
|||||||
strcpy(buf, "md5");
|
strcpy(buf, "md5");
|
||||||
ret = pg_md5_hash(crypt_buf, passwd_len + salt_len, buf + 3);
|
ret = pg_md5_hash(crypt_buf, passwd_len + salt_len, buf + 3);
|
||||||
|
|
||||||
pfree(crypt_buf);
|
free(crypt_buf);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user