From abd75edff9de9a06d0531b9db50963a0da42145c Mon Sep 17 00:00:00 2001 From: "L. E. Segovia" Date: Tue, 9 Jul 2024 12:03:53 -0300 Subject: [PATCH] orccompiler, orcparse: Use secure UCRT printing functions on Windows See #69 Part-of: --- orc/orccompiler.c | 5 ++++- orc/orcparse.c | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/orc/orccompiler.c b/orc/orccompiler.c index a1c9699..8131b9c 100644 --- a/orc/orccompiler.c +++ b/orc/orccompiler.c @@ -1306,12 +1306,15 @@ static void orc_compiler_error_valist (OrcCompiler *compiler, const char *fmt, va_list args) { - char *s; + char *s = NULL; if (compiler->error_msg) return; #ifdef HAVE_VASPRINTF vasprintf (&s, fmt, args); +#elif defined(_UCRT) + s = malloc (ORC_COMPILER_ERROR_BUFFER_SIZE); + vsnprintf_s (s, ORC_COMPILER_ERROR_BUFFER_SIZE, _TRUNCATE, fmt, args); #else s = malloc (ORC_COMPILER_ERROR_BUFFER_SIZE); vsnprintf (s, ORC_COMPILER_ERROR_BUFFER_SIZE, fmt, args); diff --git a/orc/orcparse.c b/orc/orcparse.c index f90b5ff..e24f698 100644 --- a/orc/orcparse.c +++ b/orc/orcparse.c @@ -431,8 +431,11 @@ orc_parse_log_valist (OrcParser *parser, const char *format, va_list args) } #ifdef HAVE_VASPRINTF - char *s; + char *s = NULL; vasprintf (&s, format, args); +#elif defined(_UCRT) + char s[ORC_ERROR_LENGTH] = { '\0' }; + vsnprintf_s (s, ORC_ERROR_LENGTH, _TRUNCATE, format, args); #else char s[ORC_ERROR_LENGTH] = { '\0' }; vsnprintf (s, sizeof (s), format, args); -- 2.43.0