diff options
author | Steve Huston <shuston@riverace.com> | 2002-12-21 17:42:46 +0000 |
---|---|---|
committer | Steve Huston <shuston@riverace.com> | 2002-12-21 17:42:46 +0000 |
commit | 4eb60b4fdb67761da170e4ece6609dbe1f3b0fc2 (patch) | |
tree | 1073c1de1855c284bdfe6e7ab86037e14a7a3050 | |
parent | c2cf90113adb2168a98a67a5e7d6d12fa2e7dd21 (diff) | |
download | ATCD-4eb60b4fdb67761da170e4ece6609dbe1f3b0fc2.tar.gz |
ChangeLogTag:Sat Dec 21 12:38:41 2002 Steve Huston <shuston@riverace.com>
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | ChangeLogs/ChangeLog-03a | 5 | ||||
-rw-r--r-- | ace/OS.cpp | 6 |
3 files changed, 16 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog index 31bf8e5e640..06348e7fe82 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sat Dec 21 12:38:41 2002 Steve Huston <shuston@riverace.com> + + * ace/OS.cpp (snprintf): Win32 doesn't 0-terminate the string if + the maxlen is exceed, so terminate the string in that case. + Sat Dec 21 14:36:43 UTC 2002 Johnny Willemsen <jwillemsen@remedy.nl> * include/makeinclude/platform_cygwin32.GNU: diff --git a/ChangeLogs/ChangeLog-03a b/ChangeLogs/ChangeLog-03a index 31bf8e5e640..06348e7fe82 100644 --- a/ChangeLogs/ChangeLog-03a +++ b/ChangeLogs/ChangeLog-03a @@ -1,3 +1,8 @@ +Sat Dec 21 12:38:41 2002 Steve Huston <shuston@riverace.com> + + * ace/OS.cpp (snprintf): Win32 doesn't 0-terminate the string if + the maxlen is exceed, so terminate the string in that case. + Sat Dec 21 14:36:43 UTC 2002 Johnny Willemsen <jwillemsen@remedy.nl> * include/makeinclude/platform_cygwin32.GNU: diff --git a/ace/OS.cpp b/ace/OS.cpp index 6912d72b646..f6d94de214f 100644 --- a/ace/OS.cpp +++ b/ace/OS.cpp @@ -1056,6 +1056,9 @@ ACE_OS::snprintf (char *buf, size_t maxlen, const char *format, ...) # if defined (ACE_WIN32) ACE_OSCALL (ACE_SPRINTF_ADAPTER (::_vsnprintf (buf, maxlen, format, ap)), int, -1, result); + // Win32 doesn't 0-terminate the string if it overruns maxlen. + if (result == -1) + buf[maxlen-1] = '\0'; # else ACE_OSCALL (ACE_SPRINTF_ADAPTER (::vsnprintf (buf, maxlen, format, ap)), int, -1, result); @@ -1093,6 +1096,9 @@ ACE_OS::snprintf (wchar_t *buf, size_t maxlen, const wchar_t *format, ...) // as a substitute, which does have the same signature as the UNIX98 one. ACE_OSCALL (ACE_SPRINTF_ADAPTER (::_vsnwprintf (buf, maxlen, format, ap)), int, -1, result); + // Win32 doesn't 0-terminate the string if it overruns maxlen. + if (result == -1) + buf[maxlen-1] = '\0'; # else ACE_OSCALL (ACE_SPRINTF_ADAPTER (::vswprintf (buf, maxlen, format, ap)), int, -1, result); |