summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLassi Marttala <lassi.lm.marttala@partner.bmw.com>2012-04-12 13:07:28 +0200
committerChristian Muck <christian.muck@bmw.de>2012-04-20 10:49:19 +0200
commit21d8bdb0d511b761ae0bd2ac79c3267bb6cd1fd7 (patch)
tree9c813df524920c6c95b80d3ac632ef2bfd6268d1
parent7ff92d0674d6a7deb9954313a4e4c6e86c7c46de (diff)
downloadDLT-daemon-21d8bdb0d511b761ae0bd2ac79c3267bb6cd1fd7.tar.gz
[GDLT-70] Check for malloc failures and return errors where applicable.
Signed-off-by: Christian Muck <christian.muck@bmw.de>
-rwxr-xr-xsrc/lib/dlt_client.c5
-rwxr-xr-xsrc/lib/dlt_user.c27
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;
}