Skip to content

Emit diagnostic on unknown printf specifier #5435

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion ext/standard/formatted_print.c
Original file line number Diff line number Diff line change
Expand Up @@ -621,7 +621,8 @@ php_formatted_print(char *format, size_t format_len, zval *args, int argc, int n
break;

default:
break;
zend_value_error("Unknown format specifier '%c'", *format);
goto fail;
}
format++;
format_len--;
Expand Down
8 changes: 6 additions & 2 deletions ext/standard/tests/strings/printf_64bit.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,11 @@ echo"\n\n*** Output for precision value more than maximum ***\n";
printf("%.988f",1.23456789e10);

echo"\n\n*** Output for invalid width(-15) specifier ***\n";
printf("%030.-15s", $tempstring);
try {
printf("%030.-15s", $tempstring);
} catch (ValueError $e) {
echo $e->getMessage();
}

echo"\n\n*** Output for '%F' as the format parameter ***\n";
printf("%F",1.23456789e10);
Expand Down Expand Up @@ -679,7 +683,7 @@ Notice: printf(): Requested precision of 988 digits was truncated to PHP maximum
12345678900.0000000000%d

*** Output for invalid width(-15) specifier ***
15s
Unknown format specifier '-'

*** Output for '%F' as the format parameter ***
12345678900.000000
Expand Down
78 changes: 2 additions & 76 deletions ext/standard/tests/strings/sprintf_variation10.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,8 @@ $integer_values = array (

// various float formats
$float_formats = array(
"%f", "%hf", "%lf",
"%Lf", " %f", "%f ",
"\t%f", "\n%f", "%4f",
"%30f", "%[0-9]", "%*f"
"%f", "%lf", " %f", "%f ",
"\t%f", "\n%f", "%4f", "%30f",
);

$count = 1;
Expand All @@ -57,271 +55,199 @@ echo "Done";

-- Iteration 1 --
string(8) "0.000000"
string(1) "f"
string(8) "0.000000"
string(1) "f"
string(9) " 0.000000"
string(9) "0.000000 "
string(9) " 0.000000"
string(9) "
0.000000"
string(8) "0.000000"
string(30) " 0.000000"
string(4) "0-9]"
string(1) "f"

-- Iteration 2 --
string(8) "1.000000"
string(1) "f"
string(8) "1.000000"
string(1) "f"
string(9) " 1.000000"
string(9) "1.000000 "
string(9) " 1.000000"
string(9) "
1.000000"
string(8) "1.000000"
string(30) " 1.000000"
string(4) "0-9]"
string(1) "f"

-- Iteration 3 --
string(9) "-1.000000"
string(1) "f"
string(9) "-1.000000"
string(1) "f"
string(10) " -1.000000"
string(10) "-1.000000 "
string(10) " -1.000000"
string(10) "
-1.000000"
string(9) "-1.000000"
string(30) " -1.000000"
string(4) "0-9]"
string(1) "f"

-- Iteration 4 --
string(18) "-2147483648.000000"
string(1) "f"
string(18) "-2147483648.000000"
string(1) "f"
string(19) " -2147483648.000000"
string(19) "-2147483648.000000 "
string(19) " -2147483648.000000"
string(19) "
-2147483648.000000"
string(18) "-2147483648.000000"
string(30) " -2147483648.000000"
string(4) "0-9]"
string(1) "f"

-- Iteration 5 --
string(18) "-2147483647.000000"
string(1) "f"
string(18) "-2147483647.000000"
string(1) "f"
string(19) " -2147483647.000000"
string(19) "-2147483647.000000 "
string(19) " -2147483647.000000"
string(19) "
-2147483647.000000"
string(18) "-2147483647.000000"
string(30) " -2147483647.000000"
string(4) "0-9]"
string(1) "f"

-- Iteration 6 --
string(17) "2147483647.000000"
string(1) "f"
string(17) "2147483647.000000"
string(1) "f"
string(18) " 2147483647.000000"
string(18) "2147483647.000000 "
string(18) " 2147483647.000000"
string(18) "
2147483647.000000"
string(17) "2147483647.000000"
string(30) " 2147483647.000000"
string(4) "0-9]"
string(1) "f"

-- Iteration 7 --
string(17) "2147483640.000000"
string(1) "f"
string(17) "2147483640.000000"
string(1) "f"
string(18) " 2147483640.000000"
string(18) "2147483640.000000 "
string(18) " 2147483640.000000"
string(18) "
2147483640.000000"
string(17) "2147483640.000000"
string(30) " 2147483640.000000"
string(4) "0-9]"
string(1) "f"

-- Iteration 8 --
string(11) "4667.000000"
string(1) "f"
string(11) "4667.000000"
string(1) "f"
string(12) " 4667.000000"
string(12) "4667.000000 "
string(12) " 4667.000000"
string(12) "
4667.000000"
string(11) "4667.000000"
string(30) " 4667.000000"
string(4) "0-9]"
string(1) "f"

-- Iteration 9 --
string(11) "4779.000000"
string(1) "f"
string(11) "4779.000000"
string(1) "f"
string(12) " 4779.000000"
string(12) "4779.000000 "
string(12) " 4779.000000"
string(12) "
4779.000000"
string(11) "4779.000000"
string(30) " 4779.000000"
string(4) "0-9]"
string(1) "f"

-- Iteration 10 --
string(11) "4095.000000"
string(1) "f"
string(11) "4095.000000"
string(1) "f"
string(12) " 4095.000000"
string(12) "4095.000000 "
string(12) " 4095.000000"
string(12) "
4095.000000"
string(11) "4095.000000"
string(30) " 4095.000000"
string(4) "0-9]"
string(1) "f"

-- Iteration 11 --
string(10) "250.000000"
string(1) "f"
string(10) "250.000000"
string(1) "f"
string(11) " 250.000000"
string(11) "250.000000 "
string(11) " 250.000000"
string(11) "
250.000000"
string(10) "250.000000"
string(30) " 250.000000"
string(4) "0-9]"
string(1) "f"

-- Iteration 12 --
string(18) "-2147483648.000000"
string(1) "f"
string(18) "-2147483648.000000"
string(1) "f"
string(19) " -2147483648.000000"
string(19) "-2147483648.000000 "
string(19) " -2147483648.000000"
string(19) "
-2147483648.000000"
string(18) "-2147483648.000000"
string(30) " -2147483648.000000"
string(4) "0-9]"
string(1) "f"

-- Iteration 13 --
string(17) "2147483647.000000"
string(1) "f"
string(17) "2147483647.000000"
string(1) "f"
string(18) " 2147483647.000000"
string(18) "2147483647.000000 "
string(18) " 2147483647.000000"
string(18) "
2147483647.000000"
string(17) "2147483647.000000"
string(30) " 2147483647.000000"
string(4) "0-9]"
string(1) "f"

-- Iteration 14 --
string(17) "2147483647.000000"
string(1) "f"
string(17) "2147483647.000000"
string(1) "f"
string(18) " 2147483647.000000"
string(18) "2147483647.000000 "
string(18) " 2147483647.000000"
string(18) "
2147483647.000000"
string(17) "2147483647.000000"
string(30) " 2147483647.000000"
string(4) "0-9]"
string(1) "f"

-- Iteration 15 --
string(9) "83.000000"
string(1) "f"
string(9) "83.000000"
string(1) "f"
string(10) " 83.000000"
string(10) "83.000000 "
string(10) " 83.000000"
string(10) "
83.000000"
string(9) "83.000000"
string(30) " 83.000000"
string(4) "0-9]"
string(1) "f"

-- Iteration 16 --
string(8) "1.000000"
string(1) "f"
string(8) "1.000000"
string(1) "f"
string(9) " 1.000000"
string(9) "1.000000 "
string(9) " 1.000000"
string(9) "
1.000000"
string(8) "1.000000"
string(30) " 1.000000"
string(4) "0-9]"
string(1) "f"

-- Iteration 17 --
string(18) "-2147483648.000000"
string(1) "f"
string(18) "-2147483648.000000"
string(1) "f"
string(19) " -2147483648.000000"
string(19) "-2147483648.000000 "
string(19) " -2147483648.000000"
string(19) "
-2147483648.000000"
string(18) "-2147483648.000000"
string(30) " -2147483648.000000"
string(4) "0-9]"
string(1) "f"

-- Iteration 18 --
string(17) "2147483647.000000"
string(1) "f"
string(17) "2147483647.000000"
string(1) "f"
string(18) " 2147483647.000000"
string(18) "2147483647.000000 "
string(18) " 2147483647.000000"
string(18) "
2147483647.000000"
string(17) "2147483647.000000"
string(30) " 2147483647.000000"
string(4) "0-9]"
string(1) "f"
Done
Binary file modified ext/standard/tests/strings/sprintf_variation15.phpt
Binary file not shown.
Binary file modified ext/standard/tests/strings/sprintf_variation27.phpt
Binary file not shown.
Loading