From: Dongsun Lee Date: Mon, 24 Jul 2017 05:01:33 +0000 (+0900) Subject: prevent buffer overflow at memcpy X-Git-Tag: accepted/tizen/4.0/unified/20170816.013042^0 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fsecurity%2Fdrm-service-core-tizen.git;a=commitdiff_plain;h=2bcb6c11bedb7ced4af0de15b8e9aed653a7a455 prevent buffer overflow at memcpy Change-Id: I956e8f89b0fa422c3a1eab006ade07282bb7646a Signed-off-by: Dongsun Lee --- diff --git a/service/drm-tapps.cpp b/service/drm-tapps.cpp index 93eec5e..ad840ef 100644 --- a/service/drm-tapps.cpp +++ b/service/drm-tapps.cpp @@ -41,34 +41,40 @@ #ifdef __DRM_TAPPS_API_TIME_PROFILING__ #include +#define MAX_FUNCTION_NAME_LENGTH 256 + class DrmTappsProf { public: DrmTappsProf(const char *function); ~DrmTappsProf(); struct timeval TappsStartTv; struct timeval TappsStopTv; - char TappsfunNane[256]; + char TappsfunName[MAX_FUNCTION_NAME_LENGTH]; }; DrmTappsProf::DrmTappsProf(const char *function) { - memcpy(TappsfunNane, function, strlen(function)); + size_t fun_len = strlen(function); + size_t cpy_len = (fun_len < MAX_FUNCTION_NAME_LENGTH) ? fun_len : MAX_FUNCTION_NAME_LENGTH - 1; + memcpy(TappsfunName, function, cpy_len); + TappsfunName[cpy_len] = '\0'; gettimeofday(&TappsStartTv, NULL); DRM_TAPPS_EXCEPTION("[DRM-TIZEN-PERF]START:SEC=%ld, USEC=%ld for [%s]", (long int)(TappsStartTv.tv_sec) , (long int)(TappsStartTv.tv_usec), function); + } DrmTappsProf::~DrmTappsProf() { gettimeofday(&TappsStopTv, NULL); DRM_TAPPS_EXCEPTION("[DRM-TIZEN-PERF] STOP:SEC=%ld, USEC=%ld for [%s]", - (long int)(TappsStopTv.tv_sec), (long int)(TappsStopTv.tv_usec), TappsfunNane); + (long int)(TappsStopTv.tv_sec), (long int)(TappsStopTv.tv_usec), TappsfunName); DRM_TAPPS_EXCEPTION("[DRM-TIZEN-PERF]TOTAL_DIFFF : USEC=%ld for [%s]", ((long int)(TappsStopTv.tv_sec - TappsStartTv.tv_sec) * (1000000) + (long int)( - TappsStopTv.tv_usec - TappsStartTv.tv_usec)), TappsfunNane); + TappsStopTv.tv_usec - TappsStartTv.tv_usec)), TappsfunName); } -#define DRM_TAPPS_API_TIME() DrmTappsProf DrmTappsObj(__func__); +#define DRM_TAPPS_API_TIME() DrmTappsProf(__func__); #else #define DRM_TAPPS_API_TIME() #endif /* __DRM_TAPPS_API_TIME_PROFILING__ */