https://git.reactos.org/?p=reactos.git;a=commitdiff;h=166d83b2065c1b15051a68b8a6092e4d2727f63e

commit 166d83b2065c1b15051a68b8a6092e4d2727f63e
Author:     Timo Kreuzer <timo.kreu...@reactos.org>
AuthorDate: Mon Feb 3 11:06:44 2025 +0200
Commit:     Timo Kreuzer <timo.kreu...@reactos.org>
CommitDate: Wed Feb 12 16:54:45 2025 +0200

    [CRT] Fix cvt to not overflow the buffer on NAN/INF
    
    Fixes crash in msvcrt_winetest printf
---
 sdk/lib/crt/stdlib/fcvtbuf.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/sdk/lib/crt/stdlib/fcvtbuf.c b/sdk/lib/crt/stdlib/fcvtbuf.c
index a76b27bc515..18966efcb0b 100644
--- a/sdk/lib/crt/stdlib/fcvtbuf.c
+++ b/sdk/lib/crt/stdlib/fcvtbuf.c
@@ -48,6 +48,21 @@ static char *cvt(double arg, int ndigits, int *decpt, int 
*sign, char *buf, int
   double fi, fj;
   char *p, *p1;
 
+  if (_isnan(arg))
+  {
+    snprintf(buf, ndigits, "1.#QNAN");
+    *decpt = 0;
+    *sign = 0;
+    return buf;
+  }
+  if (!_finite(arg))
+  {
+    snprintf(buf, ndigits, "1.#INF");
+    *decpt = 0;
+    *sign = 0;
+    return buf;
+  }
+
   if (ndigits >= CVTBUFSIZE - 1) ndigits = CVTBUFSIZE - 2;
   r2 = 0;
   *sign = 0;

Reply via email to