summaryrefslogtreecommitdiff
path: root/src/daemon/dlt_daemon_common.c
diff options
context:
space:
mode:
authorLassi Marttala <lassi.lm.marttala@partner.bmw.com>2012-02-21 12:16:23 +0100
committerChristian Muck <christian.muck@bmw.de>2012-04-04 14:30:09 +0200
commit64646a665c9fafc4454c67b6212702ed59e01c87 (patch)
tree510bc41181cfd9a0edd71325c3d1b3dcf52aa570 /src/daemon/dlt_daemon_common.c
parent83059468ecd8ca6a68901f20477615cb58808c94 (diff)
downloadDLT-daemon-64646a665c9fafc4454c67b6212702ed59e01c87.tar.gz
GENDLT-15, Avoid buffer overrun with snprintf().
Check return value of dlt_user_log_write_start(_id) correctly. Reduce the number of applications if allocation fails. Make dlt_user_log_write_start inline Improve error checking in dlt_user_log_write_start_id Use databuffersize to avoid reallocations Signed-off-by: Christian Muck <christian.muck@bmw.de>
Diffstat (limited to 'src/daemon/dlt_daemon_common.c')
-rwxr-xr-xsrc/daemon/dlt_daemon_common.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/daemon/dlt_daemon_common.c b/src/daemon/dlt_daemon_common.c
index 7207b4c..71ea40b 100755
--- a/src/daemon/dlt_daemon_common.c
+++ b/src/daemon/dlt_daemon_common.c
@@ -280,6 +280,7 @@ DltDaemonApplication* dlt_daemon_application_add(DltDaemon *daemon,char *apid,pi
if (daemon->applications==0)
{
daemon->applications = old;
+ daemon->num_applications -= 1;
return (DltDaemonApplication*) 0;
}
memcpy(daemon->applications,old,sizeof(DltDaemonApplication)*daemon->num_applications);
@@ -300,10 +301,9 @@ DltDaemonApplication* dlt_daemon_application_add(DltDaemon *daemon,char *apid,pi
if (application->application_description)
{
free(application->application_description);
+ application->application_description=0; // opt mb: moved inside here (very minor opt ;-)
}
- application->application_description=0;
-
if (description)
{
application->application_description = malloc(strlen(description)+1);
@@ -325,7 +325,7 @@ DltDaemonApplication* dlt_daemon_application_add(DltDaemon *daemon,char *apid,pi
dlt_user_handle = open(filename, O_WRONLY|O_NONBLOCK);
if (dlt_user_handle <0)
{
- sprintf(str,"open() failed to %s, errno=%d (%s)!\n",filename,errno,strerror(errno)); /* errno 2: ENOENT - No such file or directory */
+ snprintf(str,DLT_DAEMON_TEXTBUFSIZE, "open() failed to %s, errno=%d (%s)!\n",filename,errno,strerror(errno)); /* errno 2: ENOENT - No such file or directory */
dlt_log(LOG_ERR, str);
} /* if */
@@ -558,6 +558,7 @@ DltDaemonContext* dlt_daemon_context_add(DltDaemon *daemon,char *apid,char *ctid
if (daemon->contexts==0)
{
daemon->contexts = old;
+ daemon->num_contexts -= 1;
return (DltDaemonContext*) 0;
}
memcpy(daemon->contexts,old,sizeof(DltDaemonContext)*daemon->num_contexts);
@@ -579,10 +580,9 @@ DltDaemonContext* dlt_daemon_context_add(DltDaemon *daemon,char *apid,char *ctid
if (context->context_description)
{
free(context->context_description);
+ context->context_description=0; // opt mb: moved inside the if clause (very minor opt)
}
- context->context_description=0;
-
if (description)
{
context->context_description = malloc(strlen(description)+1);