Merge pull request #11736 from akallabeth/winpr-utils-silence

[winpr,utils] do not log command line arguments
This commit is contained in:
akallabeth
2025-07-09 12:38:31 +02:00
committed by GitHub
2 changed files with 58 additions and 9 deletions

View File

@@ -20,6 +20,11 @@ include(CMakeDependentOption)
winpr_include_directory_add(${CMAKE_CURRENT_SOURCE_DIR}) winpr_include_directory_add(${CMAKE_CURRENT_SOURCE_DIR})
option(WITH_DEBUG_UTILS_CMDLINE_DUMP "build with excessive command line parser logging" OFF)
if(WITH_DEBUG_UTILS_CMDLINE_DUMP)
winpr_definition_add(-DWITH_DEBUG_UTILS_CMDLINE_DUMP)
endif()
option(WITH_STREAMPOOL_DEBUG "build with extensive streampool logging" OFF) option(WITH_STREAMPOOL_DEBUG "build with extensive streampool logging" OFF)
if(WITH_STREAMPOOL_DEBUG) if(WITH_STREAMPOOL_DEBUG)
winpr_definition_add(-DWITH_STREAMPOOL_DEBUG) winpr_definition_add(-DWITH_STREAMPOOL_DEBUG)

View File

@@ -47,10 +47,54 @@
* *
*/ */
static void log_error(DWORD flags, LPCSTR message, int index, LPCSTR argv) #if !defined(WITH_DEBUG_UTILS_CMDLINE_DUMP)
static const char censoredmessage[] =
"<censored: build with -DWITH_DEBUG_UTILS_CMDLINE_DUMP=ON for details>";
#endif
#define log_error(flags, msg, index, arg) \
log_error_((flags), (msg), (index), (arg), __FILE__, __func__, __LINE__)
static void log_error_(DWORD flags, LPCSTR message, int index, WINPR_ATTR_UNUSED LPCSTR argv,
const char* file, const char* fkt, size_t line)
{ {
if ((flags & COMMAND_LINE_SILENCE_PARSER) == 0) if ((flags & COMMAND_LINE_SILENCE_PARSER) == 0)
WLog_ERR(TAG, message, index, argv); {
const DWORD level = WLOG_ERROR;
static wLog* log = NULL;
if (!WLog_IsLevelActive(log, level))
return;
WLog_PrintMessage(log, WLOG_MESSAGE_TEXT, level, line, file, fkt,
"Failed at index %d [%s]: %s", index,
#if defined(WITH_DEBUG_UTILS_CMDLINE_DUMP)
argv
#else
censoredmessage
#endif
,
message);
}
}
#define log_comma_error(msg, arg) log_comma_error_((msg), (arg), __FILE__, __func__, __LINE__)
static void log_comma_error_(const char* message, WINPR_ATTR_UNUSED const char* argument,
const char* file, const char* fkt, size_t line)
{
const DWORD level = WLOG_ERROR;
static wLog* log = NULL;
if (!log)
log = WLog_Get(TAG);
if (!WLog_IsLevelActive(log, level))
return;
WLog_PrintMessage(log, WLOG_MESSAGE_TEXT, level, line, file, fkt, "%s [%s]", message,
#if defined(WITH_DEBUG_UTILS_CMDLINE_DUMP)
argument
#else
censoredmessage
#endif
);
} }
int CommandLineParseArgumentsA(int argc, LPSTR* argv, COMMAND_LINE_ARGUMENT_A* options, DWORD flags, int CommandLineParseArgumentsA(int argc, LPSTR* argv, COMMAND_LINE_ARGUMENT_A* options, DWORD flags,
@@ -523,7 +567,7 @@ static size_t get_element_count(const char* list, BOOL* failed, BOOL fullquoted)
case '\0': case '\0':
if (quoted != 0) if (quoted != 0)
{ {
WLog_ERR(TAG, "Invalid argument (missing closing quote) '%s'", list); log_comma_error("Invalid argument (missing closing quote)", list);
*failed = TRUE; *failed = TRUE;
return 0; return 0;
} }
@@ -550,7 +594,7 @@ static size_t get_element_count(const char* list, BOOL* failed, BOOL fullquoted)
case ',': case ',':
if (first) if (first)
{ {
WLog_ERR(TAG, "Invalid argument (empty list elements) '%s'", list); log_comma_error("Invalid argument (empty list elements)", list);
*failed = TRUE; *failed = TRUE;
return 0; return 0;
} }
@@ -592,7 +636,7 @@ static char* get_next_comma(char* string, BOOL fullquoted)
{ {
case '\0': case '\0':
if (quoted != 0) if (quoted != 0)
WLog_ERR(TAG, "Invalid quoted argument '%s'", log); log_comma_error("Invalid quoted argument", log);
return NULL; return NULL;
case '\\': case '\\':
@@ -609,7 +653,7 @@ static char* get_next_comma(char* string, BOOL fullquoted)
int now = is_quoted(cur); int now = is_quoted(cur);
if ((quoted == 0) && !first) if ((quoted == 0) && !first)
{ {
WLog_ERR(TAG, "Invalid quoted argument '%s'", log); log_comma_error("Invalid quoted argument", log);
return NULL; return NULL;
} }
if (now == quoted) if (now == quoted)
@@ -622,7 +666,7 @@ static char* get_next_comma(char* string, BOOL fullquoted)
case ',': case ',':
if (first) if (first)
{ {
WLog_ERR(TAG, "Invalid argument (empty list elements) '%s'", log); log_comma_error("Invalid argument (empty list elements)", log);
return NULL; return NULL;
} }
if (quoted == 0) if (quoted == 0)
@@ -709,7 +753,7 @@ char** CommandLineParseCommaSeparatedValuesEx(const char* name, const char* list
{ {
if (start != end) if (start != end)
{ {
WLog_ERR(TAG, "invalid argument (quote mismatch) '%s'", list); log_comma_error("Invalid argument (quote mismatch)", list);
goto fail; goto fail;
} }
if (!is_valid_fullquoted(unquoted)) if (!is_valid_fullquoted(unquoted))
@@ -791,7 +835,7 @@ char** CommandLineParseCommaSeparatedValuesEx(const char* name, const char* list
{ {
if (lastQuote != quote) if (lastQuote != quote)
{ {
WLog_ERR(TAG, "invalid argument (quote mismatch) '%s'", list); log_comma_error("Invalid argument (quote mismatch)", list);
goto fail; goto fail;
} }
else if (lastQuote != 0) else if (lastQuote != 0)