diff options
author | Lassi Marttala <lassi.lm.marttala@partner.bmw.com> | 2012-02-21 12:16:23 +0100 |
---|---|---|
committer | Christian Muck <christian.muck@bmw.de> | 2012-04-04 14:30:09 +0200 |
commit | 64646a665c9fafc4454c67b6212702ed59e01c87 (patch) | |
tree | 510bc41181cfd9a0edd71325c3d1b3dcf52aa570 /src/daemon | |
parent | 83059468ecd8ca6a68901f20477615cb58808c94 (diff) | |
download | DLT-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')
-rwxr-xr-x | src/daemon/dlt_daemon_common.c | 10 |
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); |