From: Hwankyu Jhun Date: Thu, 10 Dec 2020 23:17:19 +0000 (+0900) Subject: Check return value of vsnprintf() X-Git-Tag: submit/tizen/20201215.075018~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=706b9f5112c35fa3acf989b1756d7e6e868f11b9;p=platform%2Fcore%2Fappfw%2Flaunchpad.git Check return value of vsnprintf() Change-Id: I6609f8bac28ec162e23867d01766a9857153e65b Signed-off-by: Hwankyu Jhun --- diff --git a/src/launchpad-process-pool/src/launchpad_log.c b/src/launchpad-process-pool/src/launchpad_log.c index 6c28d015..fc5d698f 100644 --- a/src/launchpad-process-pool/src/launchpad_log.c +++ b/src/launchpad-process-pool/src/launchpad_log.c @@ -33,13 +33,18 @@ int _log_print(const char *tag, const char *format, ...) { char formatted_buf[LAUNCHPAD_LOG_MAX_STRING_SIZE]; va_list ap; + int ret; if (!__logger) return 0; va_start(ap, format); - vsnprintf(formatted_buf, sizeof(formatted_buf), format, ap); + ret = vsnprintf(formatted_buf, sizeof(formatted_buf), format, ap); va_end(ap); + if (ret < 0 || ret >= sizeof(formatted_buf)) { + _E("vsnprintf() is failed. result(%d)", ret); + return -1; + } return _logger_print(__logger, tag, formatted_buf); } diff --git a/src/launchpad-process-pool/src/launchpad_logger.c b/src/launchpad-process-pool/src/launchpad_logger.c index 529b00c1..3dd37a4e 100644 --- a/src/launchpad-process-pool/src/launchpad_logger.c +++ b/src/launchpad-process-pool/src/launchpad_logger.c @@ -178,6 +178,7 @@ int _logger_print(logger_h handle, const char *tag, const char *format, ...) ssize_t ret; va_list ap; off_t offset; + int bytes; if (!handle || !tag || !format) { _E("Invalid parameter"); @@ -196,8 +197,12 @@ int _logger_print(logger_h handle, const char *tag, const char *format, ...) _E("lseek() is failed. errno(%d)", errno); va_start(ap, format); - vsnprintf(format_buf, sizeof(format_buf), format, ap); + bytes = vsnprintf(format_buf, sizeof(format_buf), format, ap); va_end(ap); + if (bytes < 0 || bytes >= sizeof(format_buf)) { + _E("vsnprintf() is failed. result(%d)", bytes); + return -1; + } snprintf(buf, sizeof(buf), "[%6d] %04d-%02d-%02d %02d:%02d:%02d %-16s %-100s\n", diff --git a/src/lib/common/src/launchpad_common.c b/src/lib/common/src/launchpad_common.c index 05d8befc..6e370ef6 100644 --- a/src/lib/common/src/launchpad_common.c +++ b/src/lib/common/src/launchpad_common.c @@ -1441,16 +1441,20 @@ int _send_message_to_logger(const char *tag, const char *format, ...) int ret; int fd; + va_start(ap, format); + ret = vsnprintf(fmt, sizeof(fmt), format, ap); + va_end(ap); + if (ret < 0 || ret >= sizeof(fmt)) { + _E("vsnprintf() is failed. result(%d)", ret); + return -1; + } + snprintf(buf, sizeof(buf), "%s/daemons/%u/.launchpad-logger-sock", SOCKET_PATH, getuid()); fd = __create_client_socket(buf); if (fd < 0) return -1; - va_start(ap, format); - vsnprintf(fmt, sizeof(fmt), format, ap); - va_end(ap); - snprintf(buf, sizeof(buf), "%s: %s", tag, fmt); ret = __send_raw(fd, 0, (unsigned char *)buf, strlen(buf) + 1); if (ret < 0) { @@ -1467,10 +1471,15 @@ void _print_hwc_log(const char *format, ...) { char buf[1024]; va_list ap; + int ret; va_start(ap, format); - vsnprintf(buf, sizeof(buf), format, ap); + ret = vsnprintf(buf, sizeof(buf), format, ap); va_end(ap); + if (ret < 0 || ret >= sizeof(buf)) { + _E("vsnprintf() is failed. result(%d)", ret); + return; + } prctl(PR_TASK_PERF_USER_TRACE, buf, strlen(buf)); }