From: Richard Mudgett Date: Fri, 17 Feb 2017 22:57:54 +0000 (-0600) Subject: tcptls.c: Add some missing allocation failure checks. X-Git-Tag: 14.4.0-rc1~79^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fchanges%2F02%2F5002%2F1;p=thirdparty%2Fasterisk.git tcptls.c: Add some missing allocation failure checks. Change-Id: I0ddf01cd3c10d3b6666d7bf68d4e206a37f4fbdb --- diff --git a/main/tcptls.c b/main/tcptls.c index f3108ae20d..5abaa4cb99 100644 --- a/main/tcptls.c +++ b/main/tcptls.c @@ -772,14 +772,16 @@ void *ast_tcptls_server_root(void *data) } tcptls_session = ao2_alloc(sizeof(*tcptls_session), session_instance_destructor); if (!tcptls_session) { - ast_log(LOG_WARNING, "No memory for new session: %s\n", strerror(errno)); - if (close(fd)) { - ast_log(LOG_ERROR, "close() failed: %s\n", strerror(errno)); - } + close(fd); continue; } tcptls_session->overflow_buf = ast_str_create(128); + if (!tcptls_session->overflow_buf) { + ao2_ref(tcptls_session, -1); + close(fd); + continue; + } flags = fcntl(fd, F_GETFL); fcntl(fd, F_SETFL, flags & ~O_NONBLOCK); tcptls_session->fd = fd; @@ -1087,11 +1089,15 @@ struct ast_tcptls_session_instance *ast_tcptls_client_create(struct ast_tcptls_s } } - if (!(tcptls_session = ao2_alloc(sizeof(*tcptls_session), session_instance_destructor))) { + tcptls_session = ao2_alloc(sizeof(*tcptls_session), session_instance_destructor); + if (!tcptls_session) { goto error; } tcptls_session->overflow_buf = ast_str_create(128); + if (!tcptls_session->overflow_buf) { + goto error; + } tcptls_session->client = 1; tcptls_session->fd = desc->accept_fd; tcptls_session->parent = desc; @@ -1106,9 +1112,7 @@ struct ast_tcptls_session_instance *ast_tcptls_client_create(struct ast_tcptls_s error: close(desc->accept_fd); desc->accept_fd = -1; - if (tcptls_session) { - ao2_ref(tcptls_session, -1); - } + ao2_cleanup(tcptls_session); return NULL; }