summaryrefslogtreecommitdiff
path: root/src/pal/tests/palsuite/c_runtime
diff options
context:
space:
mode:
authorJan Vorlicek <janvorli@microsoft.com>2017-01-04 22:05:43 +0100
committerGitHub <noreply@github.com>2017-01-04 22:05:43 +0100
commitedc1320180a3d68a16855da8da82f01871bf3a1d (patch)
tree029978c089a211cb6902530859ab44685854a1f1 /src/pal/tests/palsuite/c_runtime
parent06c78a5f7b27efeb7d462b1ba1c139f320d3fb80 (diff)
downloadcoreclr-edc1320180a3d68a16855da8da82f01871bf3a1d.tar.gz
coreclr-edc1320180a3d68a16855da8da82f01871bf3a1d.tar.bz2
coreclr-edc1320180a3d68a16855da8da82f01871bf3a1d.zip
Fix NULL string printing in printf (#8800)
The functions implementing various printf flavors in PAL were not handling correctly the case when a string pointer passed to them for %S and %s formats was NULL. Instead of printing `(null)`, they were crashing. This change fixes the problem and also adds PAL tests to verify it is working properly.
Diffstat (limited to 'src/pal/tests/palsuite/c_runtime')
-rw-r--r--src/pal/tests/palsuite/c_runtime/_snprintf_s/test2/test2.cpp6
-rw-r--r--src/pal/tests/palsuite/c_runtime/_snprintf_s/test3/test3.cpp6
-rw-r--r--src/pal/tests/palsuite/c_runtime/_snwprintf_s/test2/test2.cpp6
-rw-r--r--src/pal/tests/palsuite/c_runtime/_snwprintf_s/test3/test3.cpp6
-rw-r--r--src/pal/tests/palsuite/c_runtime/_vsnprintf_s/test2/test2.cpp6
-rw-r--r--src/pal/tests/palsuite/c_runtime/_vsnprintf_s/test3/test3.cpp6
-rw-r--r--src/pal/tests/palsuite/c_runtime/_vsnwprintf_s/test2/test2.cpp6
-rw-r--r--src/pal/tests/palsuite/c_runtime/_vsnwprintf_s/test3/test3.cpp6
-rw-r--r--src/pal/tests/palsuite/c_runtime/fprintf/test2/test2.cpp6
-rw-r--r--src/pal/tests/palsuite/c_runtime/fprintf/test3/test3.cpp6
-rw-r--r--src/pal/tests/palsuite/c_runtime/fwprintf/test2/test2.cpp6
-rw-r--r--src/pal/tests/palsuite/c_runtime/fwprintf/test3/test3.cpp6
-rw-r--r--src/pal/tests/palsuite/c_runtime/printf/test2/test2.cpp6
-rw-r--r--src/pal/tests/palsuite/c_runtime/printf/test3/test3.cpp6
-rw-r--r--src/pal/tests/palsuite/c_runtime/sprintf_s/test2/test2.cpp6
-rw-r--r--src/pal/tests/palsuite/c_runtime/sprintf_s/test3/test3.cpp6
-rw-r--r--src/pal/tests/palsuite/c_runtime/swprintf/test2/test2.cpp6
-rw-r--r--src/pal/tests/palsuite/c_runtime/swprintf/test3/test3.cpp6
-rw-r--r--src/pal/tests/palsuite/c_runtime/vfprintf/test2/test2.cpp6
-rw-r--r--src/pal/tests/palsuite/c_runtime/vfprintf/test3/test3.cpp6
-rw-r--r--src/pal/tests/palsuite/c_runtime/vprintf/test2/test2.cpp6
-rw-r--r--src/pal/tests/palsuite/c_runtime/vprintf/test3/test3.cpp6
-rw-r--r--src/pal/tests/palsuite/c_runtime/vsprintf/test2/test2.cpp6
-rw-r--r--src/pal/tests/palsuite/c_runtime/vsprintf/test3/test3.cpp6
-rw-r--r--src/pal/tests/palsuite/c_runtime/vswprintf/test2/test2.cpp6
-rw-r--r--src/pal/tests/palsuite/c_runtime/vswprintf/test3/test3.cpp6
-rw-r--r--src/pal/tests/palsuite/c_runtime/wprintf/test2/test2.cpp6
27 files changed, 162 insertions, 0 deletions
diff --git a/src/pal/tests/palsuite/c_runtime/_snprintf_s/test2/test2.cpp b/src/pal/tests/palsuite/c_runtime/_snprintf_s/test2/test2.cpp
index e58669466f..54ef80bae3 100644
--- a/src/pal/tests/palsuite/c_runtime/_snprintf_s/test2/test2.cpp
+++ b/src/pal/tests/palsuite/c_runtime/_snprintf_s/test2/test2.cpp
@@ -38,6 +38,12 @@ int __cdecl main(int argc, char *argv[])
DoStrTest("foo %5.2s", "bar", "foo ba");
DoStrTest("foo %-5s", "bar", "foo bar ");
DoStrTest("foo %05s", "bar", "foo 00bar");
+ DoStrTest("foo %s", NULL, "foo (null)");
+ DoStrTest("foo %hs", NULL, "foo (null)");
+ DoWStrTest("foo %ls", NULL, "foo (null)");
+ DoWStrTest("foo %ws", NULL, "foo (null)");
+ DoStrTest("foo %Ls", NULL, "foo (null)");
+ DoStrTest("foo %I64s", NULL, "foo (null)");
PAL_Terminate();
return PASS;
diff --git a/src/pal/tests/palsuite/c_runtime/_snprintf_s/test3/test3.cpp b/src/pal/tests/palsuite/c_runtime/_snprintf_s/test3/test3.cpp
index 3c52b44246..99c25a654b 100644
--- a/src/pal/tests/palsuite/c_runtime/_snprintf_s/test3/test3.cpp
+++ b/src/pal/tests/palsuite/c_runtime/_snprintf_s/test3/test3.cpp
@@ -39,6 +39,12 @@ int __cdecl main(int argc, char *argv[])
DoWStrTest("foo %5.2S", convert("bar"), "foo ba");
DoWStrTest("foo %-5S", convert("bar"), "foo bar ");
DoWStrTest("foo %05S", convert("bar"), "foo 00bar");
+ DoWStrTest("foo %S", NULL, "foo (null)");
+ DoStrTest("foo %hS", NULL, "foo (null)");
+ DoWStrTest("foo %lS", NULL, "foo (null)");
+ DoWStrTest("foo %wS", NULL, "foo (null)");
+ DoWStrTest("foo %LS", NULL, "foo (null)");
+ DoWStrTest("foo %I64S", NULL, "foo (null)");
PAL_Terminate();
return PASS;
diff --git a/src/pal/tests/palsuite/c_runtime/_snwprintf_s/test2/test2.cpp b/src/pal/tests/palsuite/c_runtime/_snwprintf_s/test2/test2.cpp
index 86bfdc9839..7d8dd65c38 100644
--- a/src/pal/tests/palsuite/c_runtime/_snwprintf_s/test2/test2.cpp
+++ b/src/pal/tests/palsuite/c_runtime/_snwprintf_s/test2/test2.cpp
@@ -38,6 +38,12 @@ int __cdecl main(int argc, char *argv[])
DoWStrTest(convert("foo %5.2s"), convert("bar"), convert("foo ba"));
DoWStrTest(convert("foo %-5s"), convert("bar"), convert("foo bar "));
DoWStrTest(convert("foo %05s"), convert("bar"), convert("foo 00bar"));
+ DoWStrTest(convert("foo %s"), NULL, convert("foo (null)"));
+ DoStrTest(convert("foo %hs"), NULL, convert("foo (null)"));
+ DoWStrTest(convert("foo %ls"), NULL, convert("foo (null)"));
+ DoWStrTest(convert("foo %ws"), NULL, convert("foo (null)"));
+ DoWStrTest(convert("foo %Ls"), NULL, convert("foo (null)"));
+ DoWStrTest(convert("foo %I64s"), NULL, convert("foo (null)"));
PAL_Terminate();
return PASS;
diff --git a/src/pal/tests/palsuite/c_runtime/_snwprintf_s/test3/test3.cpp b/src/pal/tests/palsuite/c_runtime/_snwprintf_s/test3/test3.cpp
index f6db6f265d..b4a4a32ae2 100644
--- a/src/pal/tests/palsuite/c_runtime/_snwprintf_s/test3/test3.cpp
+++ b/src/pal/tests/palsuite/c_runtime/_snwprintf_s/test3/test3.cpp
@@ -38,6 +38,12 @@ int __cdecl main(int argc, char *argv[])
DoStrTest(convert("foo %5.2S"), "bar", convert("foo ba"));
DoStrTest(convert("foo %-5S"), "bar", convert("foo bar "));
DoStrTest(convert("foo %05S"), "bar", convert("foo 00bar"));
+ DoStrTest(convert("foo %S"), NULL, convert("foo (null)"));
+ DoStrTest(convert("foo %hS"), NULL, convert("foo (null)"));
+ DoWStrTest(convert("foo %lS"), NULL, convert("foo (null)"));
+ DoWStrTest(convert("foo %wS"), NULL, convert("foo (null)"));
+ DoStrTest(convert("foo %LS"), NULL, convert("foo (null)"));
+ DoStrTest(convert("foo %I64S"), NULL, convert("foo (null)"));
PAL_Terminate();
return PASS;
diff --git a/src/pal/tests/palsuite/c_runtime/_vsnprintf_s/test2/test2.cpp b/src/pal/tests/palsuite/c_runtime/_vsnprintf_s/test2/test2.cpp
index 69c8c2723b..e5808f363e 100644
--- a/src/pal/tests/palsuite/c_runtime/_vsnprintf_s/test2/test2.cpp
+++ b/src/pal/tests/palsuite/c_runtime/_vsnprintf_s/test2/test2.cpp
@@ -37,6 +37,12 @@ int __cdecl main(int argc, char *argv[])
DoStrTest("foo %5.2s", "bar", "foo ba");
DoStrTest("foo %-5s", "bar", "foo bar ");
DoStrTest("foo %05s", "bar", "foo 00bar");
+ DoStrTest("foo %s", NULL, "foo (null)");
+ DoStrTest("foo %hs", NULL, "foo (null)");
+ DoWStrTest("foo %ls", NULL, "foo (null)");
+ DoWStrTest("foo %ws", NULL, "foo (null)");
+ DoStrTest("foo %Ls", NULL, "foo (null)");
+ DoStrTest("foo %I64s", NULL, "foo (null)");
PAL_Terminate();
return PASS;
diff --git a/src/pal/tests/palsuite/c_runtime/_vsnprintf_s/test3/test3.cpp b/src/pal/tests/palsuite/c_runtime/_vsnprintf_s/test3/test3.cpp
index a244aa44b6..bb8b153b52 100644
--- a/src/pal/tests/palsuite/c_runtime/_vsnprintf_s/test3/test3.cpp
+++ b/src/pal/tests/palsuite/c_runtime/_vsnprintf_s/test3/test3.cpp
@@ -37,6 +37,12 @@ int __cdecl main(int argc, char *argv[])
DoWStrTest("foo %5.2S", convert("bar"), "foo ba");
DoWStrTest("foo %-5S", convert("bar"), "foo bar ");
DoWStrTest("foo %05S", convert("bar"), "foo 00bar");
+ DoWStrTest("foo %S", NULL, "foo (null)");
+ DoStrTest("foo %hS", NULL, "foo (null)");
+ DoWStrTest("foo %lS", NULL, "foo (null)");
+ DoWStrTest("foo %wS", NULL, "foo (null)");
+ DoWStrTest("foo %LS", NULL, "foo (null)");
+ DoWStrTest("foo %I64S", NULL, "foo (null)");
PAL_Terminate();
return PASS;
diff --git a/src/pal/tests/palsuite/c_runtime/_vsnwprintf_s/test2/test2.cpp b/src/pal/tests/palsuite/c_runtime/_vsnwprintf_s/test2/test2.cpp
index 18e5adffd3..b2958dfa8d 100644
--- a/src/pal/tests/palsuite/c_runtime/_vsnwprintf_s/test2/test2.cpp
+++ b/src/pal/tests/palsuite/c_runtime/_vsnwprintf_s/test2/test2.cpp
@@ -34,6 +34,12 @@ int __cdecl main(int argc, char *argv[])
DoWStrTest(convert("foo %5.2s"), convert("bar"), convert("foo ba"));
DoWStrTest(convert("foo %-5s"), convert("bar"), convert("foo bar "));
DoWStrTest(convert("foo %05s"), convert("bar"), convert("foo 00bar"));
+ DoWStrTest(convert("foo %s"), NULL, convert("foo (null)"));
+ DoStrTest(convert("foo %hs"), NULL, convert("foo (null)"));
+ DoWStrTest(convert("foo %ls"), NULL, convert("foo (null)"));
+ DoWStrTest(convert("foo %ws"), NULL, convert("foo (null)"));
+ DoWStrTest(convert("foo %Ls"), NULL, convert("foo (null)"));
+ DoWStrTest(convert("foo %I64s"), NULL, convert("foo (null)"));
PAL_Terminate();
return PASS;
diff --git a/src/pal/tests/palsuite/c_runtime/_vsnwprintf_s/test3/test3.cpp b/src/pal/tests/palsuite/c_runtime/_vsnwprintf_s/test3/test3.cpp
index 5e2bfa21a0..657a911b5c 100644
--- a/src/pal/tests/palsuite/c_runtime/_vsnwprintf_s/test3/test3.cpp
+++ b/src/pal/tests/palsuite/c_runtime/_vsnwprintf_s/test3/test3.cpp
@@ -34,6 +34,12 @@ int __cdecl main(int argc, char *argv[])
DoStrTest(convert("foo %5.2S"), "bar", convert("foo ba"));
DoStrTest(convert("foo %-5S"), "bar", convert("foo bar "));
DoStrTest(convert("foo %05S"), "bar", convert("foo 00bar"));
+ DoStrTest(convert("foo %S"), NULL, convert("foo (null)"));
+ DoStrTest(convert("foo %hS"), NULL, convert("foo (null)"));
+ DoWStrTest(convert("foo %lS"), NULL, convert("foo (null)"));
+ DoWStrTest(convert("foo %wS"), NULL, convert("foo (null)"));
+ DoStrTest(convert("foo %LS"), NULL, convert("foo (null)"));
+ DoStrTest(convert("foo %I64S"), NULL, convert("foo (null)"));
PAL_Terminate();
return PASS;
diff --git a/src/pal/tests/palsuite/c_runtime/fprintf/test2/test2.cpp b/src/pal/tests/palsuite/c_runtime/fprintf/test2/test2.cpp
index 1ed7f3fd23..1441827489 100644
--- a/src/pal/tests/palsuite/c_runtime/fprintf/test2/test2.cpp
+++ b/src/pal/tests/palsuite/c_runtime/fprintf/test2/test2.cpp
@@ -36,6 +36,12 @@ int __cdecl main(int argc, char *argv[])
DoStrTest("foo %5.2s", "bar", "foo ba");
DoStrTest("foo %-5s", "bar", "foo bar ");
DoStrTest("foo %05s", "bar", "foo 00bar");
+ DoStrTest("foo %s", NULL, "foo (null)");
+ DoStrTest("foo %hs", NULL, "foo (null)");
+ DoWStrTest("foo %ls", NULL, "foo (null)");
+ DoWStrTest("foo %ws", NULL, "foo (null)");
+ DoStrTest("foo %Ls", NULL, "foo (null)");
+ DoStrTest("foo %I64s", NULL, "foo (null)");
PAL_Terminate();
return PASS;
diff --git a/src/pal/tests/palsuite/c_runtime/fprintf/test3/test3.cpp b/src/pal/tests/palsuite/c_runtime/fprintf/test3/test3.cpp
index 6185135581..dd34c08536 100644
--- a/src/pal/tests/palsuite/c_runtime/fprintf/test3/test3.cpp
+++ b/src/pal/tests/palsuite/c_runtime/fprintf/test3/test3.cpp
@@ -35,6 +35,12 @@ int __cdecl main(int argc, char *argv[])
DoWStrTest("foo %5.2S", convert("bar"), "foo ba");
DoWStrTest("foo %-5S", convert("bar"), "foo bar ");
DoWStrTest("foo %05S", convert("bar"), "foo 00bar");
+ DoWStrTest("foo %S", NULL, "foo (null)");
+ DoStrTest("foo %hS", NULL, "foo (null)");
+ DoWStrTest("foo %lS", NULL, "foo (null)");
+ DoWStrTest("foo %wS", NULL, "foo (null)");
+ DoWStrTest("foo %LS", NULL, "foo (null)");
+ DoWStrTest("foo %I64S", NULL, "foo (null)");
PAL_Terminate();
return PASS;
diff --git a/src/pal/tests/palsuite/c_runtime/fwprintf/test2/test2.cpp b/src/pal/tests/palsuite/c_runtime/fwprintf/test2/test2.cpp
index ecd3c513df..1e03147619 100644
--- a/src/pal/tests/palsuite/c_runtime/fwprintf/test2/test2.cpp
+++ b/src/pal/tests/palsuite/c_runtime/fwprintf/test2/test2.cpp
@@ -38,6 +38,12 @@ int __cdecl main(int argc, char *argv[])
DoWStrTest(convert("foo %5.2s"), convert("bar"), "foo ba");
DoWStrTest(convert("foo %-5s"), convert("bar"), "foo bar ");
DoWStrTest(convert("foo %05s"), convert("bar"), "foo 00bar");
+ DoWStrTest(convert("foo %s"), NULL, "foo (null)");
+ DoStrTest(convert("foo %hs"), NULL, "foo (null)");
+ DoWStrTest(convert("foo %ls"), NULL, "foo (null)");
+ DoWStrTest(convert("foo %ws"), NULL, "foo (null)");
+ DoWStrTest(convert("foo %Ls"), NULL, "foo (null)");
+ DoWStrTest(convert("foo %I64s"), NULL, "foo (null)");
PAL_Terminate();
return PASS;
diff --git a/src/pal/tests/palsuite/c_runtime/fwprintf/test3/test3.cpp b/src/pal/tests/palsuite/c_runtime/fwprintf/test3/test3.cpp
index d718a19067..ff24aa715f 100644
--- a/src/pal/tests/palsuite/c_runtime/fwprintf/test3/test3.cpp
+++ b/src/pal/tests/palsuite/c_runtime/fwprintf/test3/test3.cpp
@@ -37,6 +37,12 @@ int __cdecl main(int argc, char *argv[])
DoStrTest(convert("foo %5.2S"),"bar", "foo ba");
DoStrTest(convert("foo %-5S"), "bar", "foo bar ");
DoStrTest(convert("foo %05S"), "bar", "foo 00bar");
+ DoStrTest(convert("foo %S"), NULL, "foo (null)");
+ DoStrTest(convert("foo %hS"), NULL, "foo (null)");
+ DoWStrTest(convert("foo %lS"), NULL, "foo (null)");
+ DoWStrTest(convert("foo %wS"), NULL, "foo (null)");
+ DoStrTest(convert("foo %LS"), NULL, "foo (null)");
+ DoStrTest(convert("foo %I64S"), NULL, "foo (null)");
PAL_Terminate();
return PASS;
diff --git a/src/pal/tests/palsuite/c_runtime/printf/test2/test2.cpp b/src/pal/tests/palsuite/c_runtime/printf/test2/test2.cpp
index e766ef4a90..1c61b1d86d 100644
--- a/src/pal/tests/palsuite/c_runtime/printf/test2/test2.cpp
+++ b/src/pal/tests/palsuite/c_runtime/printf/test2/test2.cpp
@@ -38,6 +38,12 @@ int __cdecl main(int argc, char *argv[])
DoStrTest("foo %5.2s", "bar", "foo ba");
DoStrTest("foo %-5s", "bar", "foo bar ");
DoStrTest("foo %05s", "bar", "foo 00bar");
+ DoStrTest("foo %s", NULL, "foo (null)");
+ DoStrTest("foo %hs", NULL, "foo (null)");
+ DoWStrTest("foo %ls", NULL, "foo (null)");
+ DoWStrTest("foo %ws", NULL, "foo (null)");
+ DoStrTest("foo %Ls", NULL, "foo (null)");
+ DoStrTest("foo %I64s", NULL, "foo (null)");
PAL_Terminate();
return PASS;
diff --git a/src/pal/tests/palsuite/c_runtime/printf/test3/test3.cpp b/src/pal/tests/palsuite/c_runtime/printf/test3/test3.cpp
index 5cc530948c..79fe7213b3 100644
--- a/src/pal/tests/palsuite/c_runtime/printf/test3/test3.cpp
+++ b/src/pal/tests/palsuite/c_runtime/printf/test3/test3.cpp
@@ -37,6 +37,12 @@ int __cdecl main(int argc, char *argv[])
DoWStrTest("foo %5.2S", convert("bar"), "foo ba");
DoWStrTest("foo %-5S", convert("bar"), "foo bar ");
DoWStrTest("foo %05S", convert("bar"), "foo 00bar");
+ DoWStrTest("foo %S", NULL, "foo (null)");
+ DoStrTest("foo %hS", NULL, "foo (null)");
+ DoWStrTest("foo %lS", NULL, "foo (null)");
+ DoWStrTest("foo %wS", NULL, "foo (null)");
+ DoWStrTest("foo %LS", NULL, "foo (null)");
+ DoWStrTest("foo %I64S", NULL, "foo (null)");
PAL_Terminate();
return PASS;
diff --git a/src/pal/tests/palsuite/c_runtime/sprintf_s/test2/test2.cpp b/src/pal/tests/palsuite/c_runtime/sprintf_s/test2/test2.cpp
index 990f4f04a8..a3eb71dd1c 100644
--- a/src/pal/tests/palsuite/c_runtime/sprintf_s/test2/test2.cpp
+++ b/src/pal/tests/palsuite/c_runtime/sprintf_s/test2/test2.cpp
@@ -40,6 +40,12 @@ int __cdecl main(int argc, char *argv[])
DoStrTest("foo %5.2s", "bar", "foo ba");
DoStrTest("foo %-5s", "bar", "foo bar ");
DoStrTest("foo %05s", "bar", "foo 00bar");
+ DoStrTest("foo %s", NULL, "foo (null)");
+ DoStrTest("foo %hs", NULL, "foo (null)");
+ DoWStrTest("foo %ls", NULL, "foo (null)");
+ DoWStrTest("foo %ws", NULL, "foo (null)");
+ DoStrTest("foo %Ls", NULL, "foo (null)");
+ DoStrTest("foo %I64s", NULL, "foo (null)");
PAL_Terminate();
return PASS;
diff --git a/src/pal/tests/palsuite/c_runtime/sprintf_s/test3/test3.cpp b/src/pal/tests/palsuite/c_runtime/sprintf_s/test3/test3.cpp
index c0dc8e1716..dd6e590263 100644
--- a/src/pal/tests/palsuite/c_runtime/sprintf_s/test3/test3.cpp
+++ b/src/pal/tests/palsuite/c_runtime/sprintf_s/test3/test3.cpp
@@ -39,6 +39,12 @@ int __cdecl main(int argc, char *argv[])
DoWStrTest("foo %5.2S", convert("bar"), "foo ba");
DoWStrTest("foo %-5S", convert("bar"), "foo bar ");
DoWStrTest("foo %05S", convert("bar"), "foo 00bar");
+ DoWStrTest("foo %S", NULL, "foo (null)");
+ DoStrTest("foo %hS", NULL, "foo (null)");
+ DoWStrTest("foo %lS", NULL, "foo (null)");
+ DoWStrTest("foo %wS", NULL, "foo (null)");
+ DoWStrTest("foo %LS", NULL, "foo (null)");
+ DoWStrTest("foo %I64S", NULL, "foo (null)");
PAL_Terminate();
return PASS;
diff --git a/src/pal/tests/palsuite/c_runtime/swprintf/test2/test2.cpp b/src/pal/tests/palsuite/c_runtime/swprintf/test2/test2.cpp
index deffd3edd7..1c2f420fe9 100644
--- a/src/pal/tests/palsuite/c_runtime/swprintf/test2/test2.cpp
+++ b/src/pal/tests/palsuite/c_runtime/swprintf/test2/test2.cpp
@@ -40,6 +40,12 @@ int __cdecl main(int argc, char *argv[])
DoWStrTest(convert("foo %5.2s"), convert("bar"), convert("foo ba"));
DoWStrTest(convert("foo %-5s"), convert("bar"), convert("foo bar "));
DoWStrTest(convert("foo %05s"), convert("bar"), convert("foo 00bar"));
+ DoWStrTest(convert("foo %s"), NULL, convert("foo (null)"));
+ DoStrTest(convert("foo %hs"), NULL, convert("foo (null)"));
+ DoWStrTest(convert("foo %ls"), NULL, convert("foo (null)"));
+ DoWStrTest(convert("foo %ws"), NULL, convert("foo (null)"));
+ DoWStrTest(convert("foo %Ls"), NULL, convert("foo (null)"));
+ DoWStrTest(convert("foo %I64s"), NULL, convert("foo (null)"));
PAL_Terminate();
return PASS;
diff --git a/src/pal/tests/palsuite/c_runtime/swprintf/test3/test3.cpp b/src/pal/tests/palsuite/c_runtime/swprintf/test3/test3.cpp
index 42875c0640..8c6c38c96b 100644
--- a/src/pal/tests/palsuite/c_runtime/swprintf/test3/test3.cpp
+++ b/src/pal/tests/palsuite/c_runtime/swprintf/test3/test3.cpp
@@ -38,6 +38,12 @@ int __cdecl main(int argc, char *argv[])
DoStrTest(convert("foo %5.2S"),"bar", convert("foo ba"));
DoStrTest(convert("foo %-5S"), "bar", convert("foo bar "));
DoStrTest(convert("foo %05S"), "bar", convert("foo 00bar"));
+ DoStrTest(convert("foo %S"), NULL, convert("foo (null)"));
+ DoStrTest(convert("foo %hS"), NULL, convert("foo (null)"));
+ DoWStrTest(convert("foo %lS"), NULL, convert("foo (null)"));
+ DoWStrTest(convert("foo %wS"), NULL, convert("foo (null)"));
+ DoStrTest(convert("foo %LS"), NULL, convert("foo (null)"));
+ DoStrTest(convert("foo %I64S"), NULL, convert("foo (null)"));
PAL_Terminate();
return PASS;
}
diff --git a/src/pal/tests/palsuite/c_runtime/vfprintf/test2/test2.cpp b/src/pal/tests/palsuite/c_runtime/vfprintf/test2/test2.cpp
index d01117f047..0228734525 100644
--- a/src/pal/tests/palsuite/c_runtime/vfprintf/test2/test2.cpp
+++ b/src/pal/tests/palsuite/c_runtime/vfprintf/test2/test2.cpp
@@ -38,6 +38,12 @@ int __cdecl main(int argc, char *argv[])
DoStrTest("foo %5.2s", "bar", "foo ba");
DoStrTest("foo %-5s", "bar", "foo bar ");
DoStrTest("foo %05s", "bar", "foo 00bar");
+ DoStrTest("foo %s", NULL, "foo (null)");
+ DoStrTest("foo %hs", NULL, "foo (null)");
+ DoStrTest("foo %ls", NULL, "foo (null)");
+ DoStrTest("foo %ws", NULL, "foo (null)");
+ DoStrTest("foo %Ls", NULL, "foo (null)");
+ DoStrTest("foo %I64s", NULL, "foo (null)");
PAL_Terminate();
return PASS;
diff --git a/src/pal/tests/palsuite/c_runtime/vfprintf/test3/test3.cpp b/src/pal/tests/palsuite/c_runtime/vfprintf/test3/test3.cpp
index 0081daa426..879446f851 100644
--- a/src/pal/tests/palsuite/c_runtime/vfprintf/test3/test3.cpp
+++ b/src/pal/tests/palsuite/c_runtime/vfprintf/test3/test3.cpp
@@ -37,6 +37,12 @@ int __cdecl main(int argc, char *argv[])
DoWStrTest("foo %5.2S", convert("bar"), "foo ba");
DoWStrTest("foo %-5S", convert("bar"), "foo bar ");
DoWStrTest("foo %05S", convert("bar"), "foo 00bar");
+ DoWStrTest("foo %S", NULL, "foo (null)");
+ DoStrTest("foo %hS", NULL, "foo (null)");
+ DoWStrTest("foo %lS", NULL, "foo (null)");
+ DoWStrTest("foo %wS", NULL, "foo (null)");
+ DoWStrTest("foo %LS", NULL, "foo (null)");
+ DoWStrTest("foo %I64S", NULL, "foo (null)");
PAL_Terminate();
return PASS;
diff --git a/src/pal/tests/palsuite/c_runtime/vprintf/test2/test2.cpp b/src/pal/tests/palsuite/c_runtime/vprintf/test2/test2.cpp
index 4d9c9bc6f5..72b79e5969 100644
--- a/src/pal/tests/palsuite/c_runtime/vprintf/test2/test2.cpp
+++ b/src/pal/tests/palsuite/c_runtime/vprintf/test2/test2.cpp
@@ -38,6 +38,12 @@ int __cdecl main(int argc, char *argv[])
DoStrTest("foo %5.2s", "bar", "foo ba");
DoStrTest("foo %-5s", "bar", "foo bar ");
DoStrTest("foo %05s", "bar", "foo 00bar");
+ DoStrTest("foo %s", NULL, "foo (null)");
+ DoStrTest("foo %hs", NULL, "foo (null)");
+ DoWStrTest("foo %ls", NULL, "foo (null)");
+ DoWStrTest("foo %ws", NULL, "foo (null)");
+ DoStrTest("foo %Ls", NULL, "foo (null)");
+ DoStrTest("foo %I64s", NULL, "foo (null)");
PAL_Terminate();
return PASS;
diff --git a/src/pal/tests/palsuite/c_runtime/vprintf/test3/test3.cpp b/src/pal/tests/palsuite/c_runtime/vprintf/test3/test3.cpp
index 5376c56b76..66cd509d94 100644
--- a/src/pal/tests/palsuite/c_runtime/vprintf/test3/test3.cpp
+++ b/src/pal/tests/palsuite/c_runtime/vprintf/test3/test3.cpp
@@ -37,6 +37,12 @@ int __cdecl main(int argc, char *argv[])
DoWStrTest("foo %5.2S", convert("bar"), "foo ba");
DoWStrTest("foo %-5S", convert("bar"), "foo bar ");
DoWStrTest("foo %05S", convert("bar"), "foo 00bar");
+ DoWStrTest("foo %S", NULL, "foo (null)");
+ DoStrTest("foo %hS", NULL, "foo (null)");
+ DoWStrTest("foo %lS", NULL, "foo (null)");
+ DoWStrTest("foo %wS", NULL, "foo (null)");
+ DoWStrTest("foo %LS", NULL, "foo (null)");
+ DoWStrTest("foo %I64S", NULL, "foo (null)");
PAL_Terminate();
return PASS;
diff --git a/src/pal/tests/palsuite/c_runtime/vsprintf/test2/test2.cpp b/src/pal/tests/palsuite/c_runtime/vsprintf/test2/test2.cpp
index fbd4b41068..fc9163e976 100644
--- a/src/pal/tests/palsuite/c_runtime/vsprintf/test2/test2.cpp
+++ b/src/pal/tests/palsuite/c_runtime/vsprintf/test2/test2.cpp
@@ -36,6 +36,12 @@ int __cdecl main(int argc, char *argv[])
DoStrTest("foo %5.2s", "bar", "foo ba");
DoStrTest("foo %-5s", "bar", "foo bar ");
DoStrTest("foo %05s", "bar", "foo 00bar");
+ DoStrTest("foo %s", NULL, "foo (null)");
+ DoStrTest("foo %hs", NULL, "foo (null)");
+ DoWStrTest("foo %ls", NULL, "foo (null)");
+ DoWStrTest("foo %ws", NULL, "foo (null)");
+ DoStrTest("foo %Ls", NULL, "foo (null)");
+ DoStrTest("foo %I64s", NULL, "foo (null)");
PAL_Terminate();
return PASS;
diff --git a/src/pal/tests/palsuite/c_runtime/vsprintf/test3/test3.cpp b/src/pal/tests/palsuite/c_runtime/vsprintf/test3/test3.cpp
index 742370ebe9..4656bf3a92 100644
--- a/src/pal/tests/palsuite/c_runtime/vsprintf/test3/test3.cpp
+++ b/src/pal/tests/palsuite/c_runtime/vsprintf/test3/test3.cpp
@@ -37,6 +37,12 @@ int __cdecl main(int argc, char *argv[])
DoWStrTest("foo %5.2S", convert("bar"), "foo ba");
DoWStrTest("foo %-5S", convert("bar"), "foo bar ");
DoWStrTest("foo %05S", convert("bar"), "foo 00bar");
+ DoWStrTest("foo %S", NULL, "foo (null)");
+ DoStrTest("foo %hS", NULL, "foo (null)");
+ DoWStrTest("foo %lS", NULL, "foo (null)");
+ DoWStrTest("foo %wS", NULL, "foo (null)");
+ DoWStrTest("foo %LS", NULL, "foo (null)");
+ DoWStrTest("foo %I64S", NULL, "foo (null)");
PAL_Terminate();
return PASS;
diff --git a/src/pal/tests/palsuite/c_runtime/vswprintf/test2/test2.cpp b/src/pal/tests/palsuite/c_runtime/vswprintf/test2/test2.cpp
index 491d99f0cf..a7b1b3a336 100644
--- a/src/pal/tests/palsuite/c_runtime/vswprintf/test2/test2.cpp
+++ b/src/pal/tests/palsuite/c_runtime/vswprintf/test2/test2.cpp
@@ -34,6 +34,12 @@ int __cdecl main(int argc, char *argv[])
DoWStrTest(convert("foo %5.2s"), convert("bar"), convert("foo ba"));
DoWStrTest(convert("foo %-5s"), convert("bar"), convert("foo bar "));
DoWStrTest(convert("foo %05s"), convert("bar"), convert("foo 00bar"));
+ DoWStrTest(convert("foo %s"), NULL, convert("foo (null)"));
+ DoStrTest(convert("foo %hs"), NULL, convert("foo (null)"));
+ DoWStrTest(convert("foo %ls"), NULL, convert("foo (null)"));
+ DoWStrTest(convert("foo %ws"), NULL, convert("foo (null)"));
+ DoWStrTest(convert("foo %Ls"), NULL, convert("foo (null)"));
+ DoWStrTest(convert("foo %I64s"), NULL, convert("foo (null)"));
PAL_Terminate();
return PASS;
diff --git a/src/pal/tests/palsuite/c_runtime/vswprintf/test3/test3.cpp b/src/pal/tests/palsuite/c_runtime/vswprintf/test3/test3.cpp
index 1eb0b65ebe..40c7d2afcf 100644
--- a/src/pal/tests/palsuite/c_runtime/vswprintf/test3/test3.cpp
+++ b/src/pal/tests/palsuite/c_runtime/vswprintf/test3/test3.cpp
@@ -34,6 +34,12 @@ int __cdecl main(int argc, char *argv[])
DoStrTest(convert("foo %5.2S"), "bar", convert("foo ba"));
DoStrTest(convert("foo %-5S"), "bar", convert("foo bar "));
DoStrTest(convert("foo %05S"), "bar", convert("foo 00bar"));
+ DoStrTest(convert("foo %S"), NULL, convert("foo (null)"));
+ DoStrTest(convert("foo %hS"), NULL, convert("foo (null)"));
+ DoWStrTest(convert("foo %lS"), NULL, convert("foo (null)"));
+ DoWStrTest(convert("foo %wS"), NULL, convert("foo (null)"));
+ DoStrTest(convert("foo %LS"), NULL, convert("foo (null)"));
+ DoStrTest(convert("foo %I64S"), NULL, convert("foo (null)"));
PAL_Terminate();
return PASS;
diff --git a/src/pal/tests/palsuite/c_runtime/wprintf/test2/test2.cpp b/src/pal/tests/palsuite/c_runtime/wprintf/test2/test2.cpp
index 254e98a394..4e54d452e8 100644
--- a/src/pal/tests/palsuite/c_runtime/wprintf/test2/test2.cpp
+++ b/src/pal/tests/palsuite/c_runtime/wprintf/test2/test2.cpp
@@ -38,6 +38,12 @@ int __cdecl main(int argc, char *argv[])
DoStrTest(u"foo %5.2s", u"bar", u"foo ba");
DoStrTest(u"foo %-5s", u"bar", u"foo bar ");
DoStrTest(u"foo %05s", u"bar", u"foo 00bar");
+ DoStrTest(u"foo %s", NULL, u"foo (null)");
+ DoStrTest(u"foo %hs", NULL, u"foo (null)");
+ DoStrTest(u"foo %ls", NULL, u"foo (null)");
+ DoStrTest(u"foo %ws", NULL, u"foo (null)");
+ DoStrTest(u"foo %Ls", NULL, u"foo (null)");
+ DoStrTest(u"foo %I64s", NULL, u"foo (null)");
PAL_Terminate();
return PASS;