From 6ee9658774942f7448af700fc04df0335796a3db Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 27 Apr 2019 22:06:37 +0200 Subject: patch 8.1.1219: not checking for NULL return from alloc() Problem: Not checking for NULL return from alloc(). Solution: Add checks. (Martin Kunev, closes #4303, closes #4174) --- src/crypt.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'src/crypt.c') diff --git a/src/crypt.c b/src/crypt.c index 085f8bb81..6eb3e21fa 100644 --- a/src/crypt.c +++ b/src/crypt.c @@ -43,7 +43,7 @@ typedef struct { int (* self_test_fn)(); // Function pointer for initializing encryption/decryption. - void (* init_fn)(cryptstate_T *state, char_u *key, + int (* init_fn)(cryptstate_T *state, char_u *key, char_u *salt, int salt_len, char_u *seed, int seed_len); /* Function pointers for encoding/decoding from one buffer into another. @@ -243,6 +243,7 @@ crypt_self_test(void) /* * Allocate a crypt state and initialize it. + * Return NULL for failure. */ cryptstate_T * crypt_create( @@ -255,8 +256,16 @@ crypt_create( { cryptstate_T *state = (cryptstate_T *)alloc((int)sizeof(cryptstate_T)); + if (state == NULL) + return state; + state->method_nr = method_nr; - cryptmethods[method_nr].init_fn(state, key, salt, salt_len, seed, seed_len); + if (cryptmethods[method_nr].init_fn( + state, key, salt, salt_len, seed, seed_len) == FAIL) + { + vim_free(state); + return NULL; + } return state; } -- cgit v1.2.1