fixing two hiden bug in reactos, null termante the string right at end, code tested...
authorMagnus Olsen <magnus@greatlord.com>
Sun, 28 May 2006 00:51:16 +0000 (00:51 +0000)
committerMagnus Olsen <magnus@greatlord.com>
Sun, 28 May 2006 00:51:16 +0000 (00:51 +0000)
svn path=/trunk/; revision=22081

reactos/lib/rtl/sprintf.c
reactos/lib/rtl/swprintf.c

index c8b1e6a..37fb4c2 100644 (file)
@@ -253,6 +253,8 @@ int _vsnprintf(char *buf, size_t cnt, const char *fmt, va_list args)
                                   number of chars for from string */\r
        int qualifier;          /* 'h', 'l', 'L', 'I' or 'w' for integer fields */\r
 \r
+    /* clear the string buffer with zero so we do not need NULL terment it at end */ \r
+    \r
        str = buf;\r
        end = buf + cnt - 1;\r
        if (end < buf - 1) {\r
@@ -501,8 +503,20 @@ int _vsnprintf(char *buf, size_t cnt, const char *fmt, va_list args)
        if (str <= end)\r
                *str = '\0';\r
        else if (cnt > 0)\r
+       {\r
                /* don't write out a null byte if the buf size is zero */\r
-               *end = '\0';\r
+               //*end = '\0';\r
+          if (str-buf >=cnt ) \r
+       {\r
+                *end = '\0';\r
+       }\r
+       else\r
+       {\r
+           end++;\r
+          *end = '\0';\r
+       }\r
+       \r
+    }\r
        return str-buf;\r
 }\r
 \r
index b8c2d2b..f14d659 100644 (file)
@@ -500,9 +500,21 @@ int _vsnwprintf(wchar_t *buf, size_t cnt, const wchar_t *fmt, va_list args)
        }\r
        if (str <= end)\r
                *str = L'\0';\r
-       else if (cnt > 0)\r
+    else if (cnt > 0)\r
+       {\r
                /* don't write out a null byte if the buf size is zero */\r
-               *end = L'\0';\r
+               //*end = '\0';\r
+          if (str-buf >=cnt ) \r
+       {\r
+                *end = L'\0';\r
+       }\r
+       else\r
+       {\r
+           end++;\r
+          *end = L'\0';\r
+       }\r
+       \r
+    }\r
        return str-buf;\r
 }\r
 \r