< prev index next >

src/share/vm/prims/jvm.cpp

Print this page

        

*** 2913,2926 **** // Printing support ////////////////////////////////////////////////// extern "C" { ATTRIBUTE_PRINTF(3, 0) int jio_vsnprintf(char *str, size_t count, const char *fmt, va_list args) { ! // see bug 4399518, 4417214 if ((intptr_t)count <= 0) return -1; ! int result = vsnprintf(str, count, fmt, args); // Note: on truncation vsnprintf(3) on Unix returns number of // characters which would have been written had the buffer been large // enough; on Windows, it returns -1. We handle both cases here and // always return -1, and perform null termination. if ((result > 0 && (size_t)result >= count) || result == -1) { --- 2913,2927 ---- // Printing support ////////////////////////////////////////////////// extern "C" { ATTRIBUTE_PRINTF(3, 0) int jio_vsnprintf(char *str, size_t count, const char *fmt, va_list args) { ! // Reject count values that are negative signed values converted to ! // unsigned; see bug 4399518, 4417214 if ((intptr_t)count <= 0) return -1; ! int result = os::vsnprintf(str, count, fmt, args); // Note: on truncation vsnprintf(3) on Unix returns number of // characters which would have been written had the buffer been large // enough; on Windows, it returns -1. We handle both cases here and // always return -1, and perform null termination. if ((result > 0 && (size_t)result >= count) || result == -1) {
< prev index next >