mirror of
https://github.com/postgres/postgres.git
synced 2025-05-14 00:03:46 -04:00
Fix memory leaks in px_crypt_shacrypt().
Per Coverity. I don't think these are of any actual significance since the function ought to be invoked in a short-lived context. Still, if it's trying to be neat it should get it right. Also const-ify a constant and fix up typedef formatting.
This commit is contained in:
parent
2e4ccf1b45
commit
8ab6ef2bb8
@ -68,7 +68,7 @@ char *
|
|||||||
px_crypt_shacrypt(const char *pw, const char *salt, char *passwd, unsigned dstlen)
|
px_crypt_shacrypt(const char *pw, const char *salt, char *passwd, unsigned dstlen)
|
||||||
{
|
{
|
||||||
static const char rounds_prefix[] = "rounds=";
|
static const char rounds_prefix[] = "rounds=";
|
||||||
static char *magic_bytes[2] = {"$5$", "$6$"};
|
static const char *magic_bytes[2] = {"$5$", "$6$"};
|
||||||
|
|
||||||
/* Used to create the password hash string */
|
/* Used to create the password hash string */
|
||||||
StringInfo out_buf = NULL;
|
StringInfo out_buf = NULL;
|
||||||
@ -96,10 +96,6 @@ px_crypt_shacrypt(const char *pw, const char *salt, char *passwd, unsigned dstle
|
|||||||
unsigned int len,
|
unsigned int len,
|
||||||
salt_len = 0;
|
salt_len = 0;
|
||||||
|
|
||||||
/* Init result buffer */
|
|
||||||
out_buf = makeStringInfoExt(PX_SHACRYPT_BUF_LEN);
|
|
||||||
decoded_salt = makeStringInfoExt(PX_SHACRYPT_SALT_MAX_LEN);
|
|
||||||
|
|
||||||
/* Sanity checks */
|
/* Sanity checks */
|
||||||
if (!passwd)
|
if (!passwd)
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -116,6 +112,10 @@ px_crypt_shacrypt(const char *pw, const char *salt, char *passwd, unsigned dstle
|
|||||||
if (dstlen < PX_SHACRYPT_BUF_LEN)
|
if (dstlen < PX_SHACRYPT_BUF_LEN)
|
||||||
elog(ERROR, "insufficient result buffer size to encrypt password");
|
elog(ERROR, "insufficient result buffer size to encrypt password");
|
||||||
|
|
||||||
|
/* Init result buffer */
|
||||||
|
out_buf = makeStringInfoExt(PX_SHACRYPT_BUF_LEN);
|
||||||
|
decoded_salt = makeStringInfoExt(PX_SHACRYPT_SALT_MAX_LEN);
|
||||||
|
|
||||||
/* Init contents of buffers properly */
|
/* Init contents of buffers properly */
|
||||||
memset(&sha_buf, '\0', sizeof(sha_buf));
|
memset(&sha_buf, '\0', sizeof(sha_buf));
|
||||||
memset(&sha_buf_tmp, '\0', sizeof(sha_buf_tmp));
|
memset(&sha_buf_tmp, '\0', sizeof(sha_buf_tmp));
|
||||||
@ -630,8 +630,8 @@ error:
|
|||||||
if (digestB != NULL)
|
if (digestB != NULL)
|
||||||
px_md_free(digestB);
|
px_md_free(digestB);
|
||||||
|
|
||||||
if (out_buf != NULL)
|
|
||||||
destroyStringInfo(out_buf);
|
destroyStringInfo(out_buf);
|
||||||
|
destroyStringInfo(decoded_salt);
|
||||||
|
|
||||||
ereport(ERROR,
|
ereport(ERROR,
|
||||||
errcode(ERRCODE_INTERNAL_ERROR),
|
errcode(ERRCODE_INTERNAL_ERROR),
|
||||||
|
@ -1825,6 +1825,7 @@ PGAlignedBlock
|
|||||||
PGAlignedXLogBlock
|
PGAlignedXLogBlock
|
||||||
PGAsyncStatusType
|
PGAsyncStatusType
|
||||||
PGCALL2
|
PGCALL2
|
||||||
|
PGCRYPTO_SHA_t
|
||||||
PGChecksummablePage
|
PGChecksummablePage
|
||||||
PGContextVisibility
|
PGContextVisibility
|
||||||
PGErrorVerbosity
|
PGErrorVerbosity
|
||||||
|
Loading…
x
Reference in New Issue
Block a user