From 21d8bdb0d511b761ae0bd2ac79c3267bb6cd1fd7 Mon Sep 17 00:00:00 2001 From: Lassi Marttala Date: Thu, 12 Apr 2012 13:07:28 +0200 Subject: [GDLT-70] Check for malloc failures and return errors where applicable. Signed-off-by: Christian Muck --- src/lib/dlt_client.c | 5 +++++ src/lib/dlt_user.c | 27 +++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/src/lib/dlt_client.c b/src/lib/dlt_client.c index b3962a7..3007b11 100755 --- a/src/lib/dlt_client.c +++ b/src/lib/dlt_client.c @@ -336,6 +336,11 @@ int dlt_client_send_inject_msg(DltClient *client, char *apid, char *ctid, uint32 msg.databuffer = (uint8_t *) malloc(msg.datasize); msg.databuffersize = msg.datasize; } + if(msg.databuffer == 0) + { + dlt_message_free(&msg,0); + return -1; + } memcpy(msg.databuffer , &serviceID,sizeof(serviceID)); offset+=sizeof(uint32_t); diff --git a/src/lib/dlt_user.c b/src/lib/dlt_user.c index 6685109..d1da51a 100755 --- a/src/lib/dlt_user.c +++ b/src/lib/dlt_user.c @@ -477,6 +477,11 @@ int dlt_register_app(const char *appid, const char * description) /* Terminate transmitted string with 0 */ dlt_user.application_description[desc_len]='\0'; } + else + { + DLT_SEM_FREE(); + return -1; + } } DLT_SEM_FREE(); @@ -678,6 +683,12 @@ int dlt_register_context_ll_ts(DltContext *handle, const char *contextid, const { size_t desc_len = strlen(description); dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].context_description = malloc(desc_len+1); + if(dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].context_description == 0) + { + DLT_SEM_FREE(); + return -1; + } + strncpy(dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].context_description, description, desc_len); /* Terminate transmitted string with 0 */ @@ -1668,11 +1679,22 @@ int dlt_register_injection_callback(DltContext *handle, uint32_t service_id, if (dlt_user.dlt_ll_ts[i].injection_table == 0) { dlt_user.dlt_ll_ts[i].injection_table = (DltUserInjectionCallback*) malloc(sizeof(DltUserInjectionCallback)); + if(dlt_user.dlt_ll_ts[i].injection_table == 0) + { + DLT_SEM_FREE(); + return -1; + } } else { old = dlt_user.dlt_ll_ts[i].injection_table; dlt_user.dlt_ll_ts[i].injection_table = (DltUserInjectionCallback*) malloc(sizeof(DltUserInjectionCallback)*(j+1)); + if(dlt_user.dlt_ll_ts[i].injection_table == 0) + { + dlt_user.dlt_ll_ts[i].injection_table = old; + DLT_SEM_FREE(); + return -1; + } memcpy(dlt_user.dlt_ll_ts[i].injection_table,old,sizeof(DltUserInjectionCallback)*j); free(old); } @@ -2751,6 +2773,11 @@ int dlt_user_log_check_user_message(void) inject_buffer = 0; } } + else + { + DLT_SEM_FREE(); + return -1; + } break; } -- cgit v1.2.1