Author: sebor
Date: Thu Dec 13 13:43:43 2007
New Revision: 604041

URL: http://svn.apache.org/viewvc?rev=604041&view=rev
Log:
2007-12-12  Travis Vitek  <[EMAIL PROTECTED]>

        Merged rev 604038 with a fix for STDCXX-524 from trunk.
        * tests/localization/22.locale.codecvt.length.cpp (create_locale):
        Check return code from rw_snprintf().
        * tests/localization/22.locale.codecvt.out.cpp (create_locale):
        Ditto.
        * tests/localization/22.locale.time.get.cpp (make_LC_TIME):
        Ditto. Use rw_snprintf() instead of sprintf(), use larger
        fixed buffer sizes.
        * tests/localization/22.locale.time.put.cpp (make_LC_TIME):
        Ditto.
        * tests/src/locale.cpp (): Ditto.

Modified:
    
incubator/stdcxx/branches/4.2.x/tests/localization/22.locale.codecvt.length.cpp
    incubator/stdcxx/branches/4.2.x/tests/localization/22.locale.codecvt.out.cpp
    incubator/stdcxx/branches/4.2.x/tests/localization/22.locale.time.get.cpp
    incubator/stdcxx/branches/4.2.x/tests/localization/22.locale.time.put.cpp
    incubator/stdcxx/branches/4.2.x/tests/src/locale.cpp

Modified: 
incubator/stdcxx/branches/4.2.x/tests/localization/22.locale.codecvt.length.cpp
URL: 
http://svn.apache.org/viewvc/incubator/stdcxx/branches/4.2.x/tests/localization/22.locale.codecvt.length.cpp?rev=604041&r1=604040&r2=604041&view=diff
==============================================================================
--- 
incubator/stdcxx/branches/4.2.x/tests/localization/22.locale.codecvt.length.cpp 
(original)
+++ 
incubator/stdcxx/branches/4.2.x/tests/localization/22.locale.codecvt.length.cpp 
Thu Dec 13 13:43:43 2007
@@ -69,7 +69,9 @@
 const char* create_locale ()
 {
     char cm_fname [1024];
-    rw_sprintf (cm_fname, "%s%c%s", locale_root, _RWSTD_PATH_SEP, "charmap");
+    if (rw_snprintf (cm_fname, sizeof cm_fname, "%s%c%s",
+                     locale_root, _RWSTD_PATH_SEP, "charmap") < 0)
+        return 0;
 
     static const char charmap[] = {
         "<code_set_name> test_charmap\n"
@@ -98,7 +100,9 @@
         return 0;
 
     char src_fname [1024];
-    rw_sprintf (src_fname, "%s%c%s", locale_root, _RWSTD_PATH_SEP, "source");
+    if (rw_snprintf (src_fname, sizeof src_fname, "%s%c%s",
+                     locale_root, _RWSTD_PATH_SEP, "source") < 0)
+        return 0;
 
     if (std::size_t (-1) == rw_fwrite (src_fname, "LC_CTYPE\nEND LC_CTYPE\n"))
         return 0;

Modified: 
incubator/stdcxx/branches/4.2.x/tests/localization/22.locale.codecvt.out.cpp
URL: 
http://svn.apache.org/viewvc/incubator/stdcxx/branches/4.2.x/tests/localization/22.locale.codecvt.out.cpp?rev=604041&r1=604040&r2=604041&view=diff
==============================================================================
--- 
incubator/stdcxx/branches/4.2.x/tests/localization/22.locale.codecvt.out.cpp 
(original)
+++ 
incubator/stdcxx/branches/4.2.x/tests/localization/22.locale.codecvt.out.cpp 
Thu Dec 13 13:43:43 2007
@@ -58,7 +58,9 @@
 create_locale ()
 {
     char cm_fname [1024];
-    std::sprintf (cm_fname, "%s%c%s", locale_root, _RWSTD_PATH_SEP, "charmap");
+    if (rw_snprintf (cm_fname, sizeof cm_fname, "%s%c%s",
+                     locale_root, _RWSTD_PATH_SEP, "charmap") < 0)
+        return 0;
 
     static const char charmap[] = {
         "<code_set_name> test_charmap \n"
@@ -90,7 +92,9 @@
         return 0;
 
     char src_fname [1024];
-    std::sprintf (src_fname, "%s%c%s", locale_root, _RWSTD_PATH_SEP, "source");
+    if (rw_snprintf (src_fname, sizeof src_fname, "%s%c%s",
+                     locale_root, _RWSTD_PATH_SEP, "source") < 0)
+        return 0;
 
     if (std::size_t (-1) == rw_fwrite (src_fname, "LC_CTYPE\nEND LC_CTYPE\n"))
         return 0;

Modified: 
incubator/stdcxx/branches/4.2.x/tests/localization/22.locale.time.get.cpp
URL: 
http://svn.apache.org/viewvc/incubator/stdcxx/branches/4.2.x/tests/localization/22.locale.time.get.cpp?rev=604041&r1=604040&r2=604041&view=diff
==============================================================================
--- incubator/stdcxx/branches/4.2.x/tests/localization/22.locale.time.get.cpp 
(original)
+++ incubator/stdcxx/branches/4.2.x/tests/localization/22.locale.time.get.cpp 
Thu Dec 13 13:43:43 2007
@@ -39,6 +39,7 @@
 #include <driver.h>      // for rw_test()
 #include <file.h>        // for rw_nextfd()
 #include <rw_locale.h>   // for rw_locales()
+#include <rw_printf.h>   // for rw_snprintf()
 
 /**************************************************************************/
 
@@ -1125,14 +1126,16 @@
 static const char*
 make_LC_TIME (const time_data *td)
 {
-    static char locnamebuf [L_tmpnam + 32];
+    static char locnamebuf [1024];
 
     if (*locnamebuf)
         return locnamebuf;
 
     // create a temporary locale definition file
-    char srcfname [L_tmpnam + 32];
-    std::sprintf (srcfname, "%s" SLASH "LC_TIME.src", locale_root);
+    char srcfname [1024];
+    if (rw_snprintf (srcfname, sizeof srcfname, "%s%c%s",
+                     locale_root, _RWSTD_PATH_SEP, "LC_TIME.src") < 0)
+        return 0;
 
     std::FILE *fout = std::fopen (srcfname, "w");
 
@@ -1265,8 +1268,10 @@
     std::fclose (fout);
 
     // create a temporary character map file
-    char cmfname [L_tmpnam + 32];
-    std::sprintf (cmfname, "%s" SLASH "pcs.cm", locale_root);
+    char cmfname [1024];
+    if (rw_snprintf (cmfname, sizeof cmfname, "%s%c%s",
+                     locale_root, _RWSTD_PATH_SEP, "LC_TIME.cm") < 0)
+        return 0;
 
     fout = std::fopen (cmfname, "w");
     pcs_write (fout, 0);
@@ -1276,6 +1281,9 @@
     // process the locale definition file and the character map
     const char* const locname =
         rw_localedef ("-w ", srcfname, cmfname, "test-locale");
+
+    if (locname && (strlen(locname) < sizeof locnamebuf))
+        std::strcpy (locnamebuf, locname);
 
     return locname;
 }

Modified: 
incubator/stdcxx/branches/4.2.x/tests/localization/22.locale.time.put.cpp
URL: 
http://svn.apache.org/viewvc/incubator/stdcxx/branches/4.2.x/tests/localization/22.locale.time.put.cpp?rev=604041&r1=604040&r2=604041&view=diff
==============================================================================
--- incubator/stdcxx/branches/4.2.x/tests/localization/22.locale.time.put.cpp 
(original)
+++ incubator/stdcxx/branches/4.2.x/tests/localization/22.locale.time.put.cpp 
Thu Dec 13 13:43:43 2007
@@ -40,6 +40,7 @@
 #include <environ.h>     // for rw_putenv()
 #include <file.h>        // for pcs_write(), ...
 #include <rw_locale.h>   // for rw_localedef(), ...
+#include <rw_printf.h>   // for rw_snprintf()
 #include <valcmp.h>      // for rw_strncmp()
 
 
@@ -54,10 +55,6 @@
 // set in main() instead of here to avoid Solaris 7 putenv() bug (PR #30017)
 const char* locale_root;
 
-#define LC_TIME_SRC        "LC_TIME.src"
-#define LC_TIME_CM         "LC_TIME.cm"
-#define TEST_LOCALE_NAME   "test.locale"
-
 /**************************************************************************/
 
 const char* narrow (char *dst, const char *src)
@@ -336,7 +333,7 @@
 
 const char* make_LC_TIME (const time_data *td)
 {
-    static char locnamebuf [256];
+    static char locnamebuf [1024];
 
     // assume `td' points to the same data as the first time
     // the function was called and reuse the same database
@@ -344,12 +341,12 @@
         return locnamebuf;
 
     // create a temporary locale definition file
-    char lc_time_src_path [256];
-    std::strcpy (lc_time_src_path, locale_root);
-    std::strcat (lc_time_src_path, SLASH);
-    std::strcat (lc_time_src_path, LC_TIME_SRC);
+    char srcfname [1024];
+    if (rw_snprintf (srcfname, sizeof srcfname, "%s%c%s",
+                     locale_root, _RWSTD_PATH_SEP, "LC_TIME.src") < 0)
+        return 0;
 
-    std::FILE *fout = std::fopen (lc_time_src_path, "w");
+    std::FILE *fout = std::fopen (srcfname, "w");
 
     std::fprintf (fout, "LC_TIME\n");
 
@@ -480,25 +477,25 @@
     std::fclose (fout);
 
     // create a temporary character map file
-    char lc_time_cm_path [256];
-    std::strcpy (lc_time_cm_path, locale_root);
-    std::strcat (lc_time_cm_path, SLASH);
-    std::strcat (lc_time_cm_path, LC_TIME_CM);
+    char cmfname [1024];
+    if (rw_snprintf (cmfname, sizeof cmfname, "%s%c%s",
+                     locale_root, _RWSTD_PATH_SEP, "LC_TIME.cm") < 0)
+        return 0;
 
-    fout = std::fopen (lc_time_cm_path, "w");
+    fout = std::fopen (cmfname, "w");
     pcs_write (fout, 0);
 
     std::fclose (fout);
 
     const char* const locname =
-        rw_localedef ("", lc_time_src_path, lc_time_cm_path, TEST_LOCALE_NAME);
+        rw_localedef ("", srcfname, cmfname, "test-locale");
 
-    if (locname)
+    if (locname && (strlen(locname) < sizeof locnamebuf))
         std::strcpy (locnamebuf, locname);
 
     // remove temporary files
-    std::remove (lc_time_cm_path);
-    std::remove (lc_time_src_path);
+    std::remove (cmfname);
+    std::remove (srcfname);
 
     return locname;
 }

Modified: incubator/stdcxx/branches/4.2.x/tests/src/locale.cpp
URL: 
http://svn.apache.org/viewvc/incubator/stdcxx/branches/4.2.x/tests/src/locale.cpp?rev=604041&r1=604040&r2=604041&view=diff
==============================================================================
--- incubator/stdcxx/branches/4.2.x/tests/src/locale.cpp (original)
+++ incubator/stdcxx/branches/4.2.x/tests/src/locale.cpp Thu Dec 13 13:43:43 
2007
@@ -35,6 +35,7 @@
 #include <environ.h>      // for rw_putenv()
 #include <file.h>         // for SHELL_RM_RF, rw_tmpnam
 #include <rw_process.h>   // for rw_system()
+#include <rw_printf.h>    // for rw_snprintf()
 #include <driver.h>       // for rw_error()
 
 #ifdef _RWSTD_OS_LINUX
@@ -773,7 +774,10 @@
     // create a temporary locale definition file that exercises as
     // many different parts of the collate standard as possible
     char srcfname [PATH_MAX];
-    sprintf (srcfname, "%s%slocale.src", locale_root, SLASH);
+    if (rw_snprintf (srcfname, PATH_MAX, "%s%slocale.src",
+                     locale_root, SLASH) < 0) {
+        return 0;
+    }
 
     FILE *fout = fopen (srcfname, "w");
 
@@ -789,7 +793,10 @@
 
     // create a temporary character map file
     char cmfname [PATH_MAX];
-    sprintf (cmfname, "%s%scharmap.src", locale_root, SLASH);
+    if (rw_snprintf (cmfname, PATH_MAX, "%s%scharmap.src",
+                     locale_root, SLASH) < 0) {
+        return 0;
+    }
 
     fout = fopen (cmfname, "w");
 
@@ -799,11 +806,11 @@
         return 0;
     }
 
-       fprintf (fout, "%s", charmap);
+    fprintf (fout, "%s", charmap);
 
     fclose (fout);
 
-       locname = "test-locale";
+    locname = "test-locale";
 
     // process the locale definition file and character map
     if (0 == rw_localedef ("-w", srcfname, cmfname, locname))


Reply via email to