From 2a9bc0d5e6637e61e5dbedf3dff292efe319917d Mon Sep 17 00:00:00 2001 From: Michael Gillespie Date: Fri, 5 Apr 2024 11:49:35 -0500 Subject: [PATCH] Prevent assert in MSVC debug version of isprint() (#2062) --- libyara/modules/pe/pe.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libyara/modules/pe/pe.c b/libyara/modules/pe/pe.c index 8a0e53bd..59de5a09 100644 --- a/libyara/modules/pe/pe.c +++ b/libyara/modules/pe/pe.c @@ -2006,15 +2006,19 @@ const char* pe_get_section_full_name( // Check string for (uint64_t len = 0; fits_in_pe(pe, string, len + 1); len++) { + // Prevent sign extension to 32-bits on bytes > 0x7F + // The result negative integer would cause assert in MSVC debug version of isprint() + unsigned int one_char = (unsigned char)(string[len]); + // Valid string - if (string[len] == 0) + if (one_char == 0) { *section_full_name_length = len; return string; } // string contain unprintable character - if (!isprint(string[len])) + if (!isprint(one_char)) return NULL; }