]> granicus.if.org Git - libevent/commitdiff
Fix an unlikely degenerate case of evutil_vsnprintf
authorNick Mathewson <nickm@torproject.org>
Wed, 28 Jan 2009 20:31:19 +0000 (20:31 +0000)
committerNick Mathewson <nickm@torproject.org>
Wed, 28 Jan 2009 20:31:19 +0000 (20:31 +0000)
svn:r1067

evutil.c

index 2dea583765688106e0699706fc0c2e8c6f5fc701..53cb75d39e1674a41743d927f592fcf0a96b5e07 100644 (file)
--- a/evutil.c
+++ b/evutil.c
@@ -340,18 +340,18 @@ evutil_snprintf(char *buf, size_t buflen, const char *format, ...)
 int
 evutil_vsnprintf(char *buf, size_t buflen, const char *format, va_list ap)
 {
+        int r;
+        if (!buflen)
+                return 0;
 #ifdef _MSC_VER
-       int r = _vsnprintf(buf, buflen, format, ap);
-       buf[buflen-1] = '\0';
-       if (r >= 0)
-               return r;
-       else
-               return _vscprintf(format, ap);
+       r = _vsnprintf(buf, buflen, format, ap);
+       if (r < 0)
+               r = _vscprintf(format, ap);
 #else
-       int r = vsnprintf(buf, buflen, format, ap);
+       r = vsnprintf(buf, buflen, format, ap);
+#endif
        buf[buflen-1] = '\0';
        return r;
-#endif
 }
 
 #define USE_INTERNAL_NTOP