# HG changeset patch # User KUBOTA Yuji # Date 1489076095 -32400 # Node ID 2518d4eee9043eb71ae772aaf7846e76ee954cca # Parent bbf1ae6d2a2ea6378d04c13af6a1905fab4990ed Bug 3223: Cannot set empty value to signal setting Reviewed-by: yasuenag https://github.com/HeapStats/heapstats/pull/47 diff -r bbf1ae6d2a2e -r 2518d4eee904 agent/ChangeLog --- a/agent/ChangeLog Mon Feb 27 19:25:26 2017 +0900 +++ b/agent/ChangeLog Fri Mar 10 01:14:55 2017 +0900 @@ -1,3 +1,11 @@ +2017-03-10 KUBOTA Yuji + + * Bug 3223: Cannot set empty value to signal setting + +2017-02-27 Yasumasa Suenaga + + * Bug 3331: Refactoring for memory management in HeapStats Agent + 2017-02-09 Yasumasa Suenaga * Bug 3322: TClassContainer instance might be broken in multithreaded access diff -r bbf1ae6d2a2e -r 2518d4eee904 agent/src/util.cpp --- a/agent/src/util.cpp Mon Feb 27 19:25:26 2017 +0900 +++ b/agent/src/util.cpp Fri Mar 10 01:14:55 2017 +0900 @@ -499,11 +499,8 @@ /* Get matched value string. */ if (unlikely(pcre_get_substring(lineBuff, matchArr, matchCnt, 2, &value) <= 0)) { - - /* This config maybe designated default value. e.g. "aaa=" */ - pcre_free_substring(key); - pcre_free_substring(value); - continue; + /* This maybe set default value or disable. e.g. "aaa=" */ + value = (char *)calloc(1, sizeof(char)); } /* Check key name. */ @@ -573,20 +570,30 @@ || strcmp(key, "signal_reload") == 0) { /* If signal is supported by JVM. */ - if (isSupportSignal(value)) { + if (isSupportSignal(value) || value == NULL || value[0] == '\0') { /* Copy string exclude "SIG". */ if (strcmp(key, "logsignal_normal") == 0) { free(arg.logSignalNormal); - arg.logSignalNormal = strdup(value + 3); - + if (value == NULL || value[0] == '\0') { + arg.logSignalNormal = strdup(""); + } else { + arg.logSignalNormal = strdup(value + 3); + } } else if (strcmp(key, "logsignal_all") == 0) { free(arg.logSignalAll); - arg.logSignalAll = strdup(value + 3); - + if (value == NULL || value[0] == '\0') { + arg.logSignalAll = strdup(""); + } else { + arg.logSignalAll = strdup(value + 3); + } } else { free(arg.reloadSignal); - arg.reloadSignal = strdup(value + 3); + if (value == NULL || value[0] == '\0') { + arg.reloadSignal = strdup(""); + } else { + arg.reloadSignal = strdup(value + 3); + } } } else { PRINT_WARN_MSG_HEADER