1
0
forked from aniani/vim

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)
This commit is contained in:
Bram Moolenaar
2019-04-27 22:06:37 +02:00
parent 00aa069db8
commit 6ee9658774
14 changed files with 83 additions and 37 deletions

View File

@@ -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;
}