From 7adf8b6070ee92d538aa73ad3a87aef7712aa596 Mon Sep 17 00:00:00 2001 From: Tilghman Lesher Date: Wed, 12 Dec 2007 17:15:56 +0000 Subject: [PATCH] Correctly handle possible memory allocation failure Reported by: eliel Patch by: eliel (Closes issue #11512) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@92507 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- main/asterisk.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/main/asterisk.c b/main/asterisk.c index 3c134e2078..95778bfe4b 100644 --- a/main/asterisk.c +++ b/main/asterisk.c @@ -1983,7 +1983,7 @@ static char *cli_prompt(EditLine *el) static char **ast_el_strtoarr(char *buf) { - char **match_list = NULL, *retstr; + char **match_list = NULL, **match_list_tmp, *retstr; size_t match_list_len; int matches = 0; @@ -1994,8 +1994,12 @@ static char **ast_el_strtoarr(char *buf) break; if (matches + 1 >= match_list_len) { match_list_len <<= 1; - if (!(match_list = ast_realloc(match_list, match_list_len * sizeof(char *)))) { - /* TODO: Handle memory allocation failure */ + if ((match_list_tmp = ast_realloc(match_list, match_list_len * sizeof(char *)))) { + match_list = match_list_tmp; + } else { + if (match_list) + ast_free(match_list); + return (char **) NULL; } } @@ -2006,8 +2010,12 @@ static char **ast_el_strtoarr(char *buf) return (char **) NULL; if (matches >= match_list_len) { - if (!(match_list = ast_realloc(match_list, (match_list_len + 1) * sizeof(char *)))) { - /* TODO: Handle memory allocation failure */ + if ((match_list_tmp = ast_realloc(match_list, (match_list_len + 1) * sizeof(char *)))) { + match_list = match_list_tmp; + } else { + if (match_list) + ast_free(match_list); + return (char **) NULL; } }