summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYusuke Sato <yusuke-sato@apn.alpine.co.jp>2016-02-29 15:26:00 +0100
committerAlexander Wenzel <Alexander.AW.Wenzel@bmw.de>2016-09-23 15:37:24 +0200
commitc42fc7e5990b8a3025523c2a2835bb28ecc88cac (patch)
tree6c199d21d25dab2db0f3870cfc4c20f45d5d7918
parent0af9644dcc8681dea32e868c43bca23697e96c9b (diff)
downloadDLT-daemon-c42fc7e5990b8a3025523c2a2835bb28ecc88cac.tar.gz
Fix: Segfault in checking buffer usage
Segfault is caused by dlt_user_check_buffer() if this function is called during increasing the user buffer. To avoid this issue, semaphore has to be added. Signed-off-by: Yusuke Sato <yusuke-sato@apn.alpine.co.jp> Change-Id: Ie56f2fb73aeacb835180468e57c9338d2ffdb072
-rw-r--r--src/lib/dlt_user.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/lib/dlt_user.c b/src/lib/dlt_user.c
index ca7a56d..6cb4a7d 100644
--- a/src/lib/dlt_user.c
+++ b/src/lib/dlt_user.c
@@ -4400,6 +4400,8 @@ DltReturnValue dlt_user_check_buffer(int *total_size, int *used_size)
if(total_size == NULL || used_size == NULL)
return DLT_RETURN_WRONG_PARAMETER;
+ DLT_SEM_LOCK();
+
#ifdef DLT_SHM_ENABLE
*total_size = dlt_shm_get_total_size(&(dlt_user.dlt_shm));
*used_size = dlt_shm_get_used_size(&(dlt_user.dlt_shm));
@@ -4408,6 +4410,7 @@ DltReturnValue dlt_user_check_buffer(int *total_size, int *used_size)
*used_size = dlt_buffer_get_used_size(&(dlt_user.startup_buffer));
#endif
+ DLT_SEM_FREE();
return DLT_RETURN_OK; /* ok */
}