postgres.git / summary / log / commit / refs
commit 6afe200ceea818c82e3a1a754c5043e7df1efa10
Author: Bruce Momjian <bruce@momjian.us>
Date: Sat Feb 01 01:19:53 2014 +0000
First released in: 9.4.0
chkpass: check for NULL return value from crypt()
Report from Jozef Mlich using Coverity
contrib/chkpass/chkpass.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/contrib/chkpass/chkpass.c b/contrib/chkpass/chkpass.c
index 0c9fec0e676..dc66075f988 100644
--- a/contrib/chkpass/chkpass.c
+++ b/contrib/chkpass/chkpass.c
@@ -70,6 +70,7 @@ chkpass_in(PG_FUNCTION_ARGS)
char *str = PG_GETARG_CSTRING(0);
chkpass *result;
char mysalt[4];
+ char *crypt_output;
static char salt_chars[] =
"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
@@ -92,7 +93,13 @@ chkpass_in(PG_FUNCTION_ARGS)
mysalt[1] = salt_chars[random() & 0x3f];
mysalt[2] = 0; /* technically the terminator is not necessary
* but I like to play safe */
- strcpy(result->password, crypt(str, mysalt));
+
+ if ((crypt_output = crypt(str, mysalt)) == NULL)
+ ereport(ERROR,
+ (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+ errmsg("crypt() failed")));
+ strcpy(result->password, crypt_output);
+
PG_RETURN_POINTER(result);
}
[parent: 85317e88ccae]