diff options
author | Lassi Marttala <lassi.lm.marttala@partner.bmw.com> | 2012-04-12 13:07:28 +0200 |
---|---|---|
committer | Christian Muck <christian.muck@bmw.de> | 2012-04-20 10:49:19 +0200 |
commit | 21d8bdb0d511b761ae0bd2ac79c3267bb6cd1fd7 (patch) | |
tree | 9c813df524920c6c95b80d3ac632ef2bfd6268d1 /src/lib | |
parent | 7ff92d0674d6a7deb9954313a4e4c6e86c7c46de (diff) | |
download | DLT-daemon-21d8bdb0d511b761ae0bd2ac79c3267bb6cd1fd7.tar.gz |
[GDLT-70] Check for malloc failures and return errors where applicable.
Signed-off-by: Christian Muck <christian.muck@bmw.de>
Diffstat (limited to 'src/lib')
-rwxr-xr-x | src/lib/dlt_client.c | 5 | ||||
-rwxr-xr-x | src/lib/dlt_user.c | 27 |
2 files changed, 32 insertions, 0 deletions
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; } |