Skip to content

Commit 47798b8

Browse files
committed
Make sprintf family of functions warn on incompatible float to int conversion
1 parent 4ecee71 commit 47798b8

File tree

1 file changed

+13
-18
lines changed

1 file changed

+13
-18
lines changed

ext/standard/formatted_print.c

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -634,15 +634,14 @@ php_formatted_print(char *format, size_t format_len, zval *args, int argc, int n
634634

635635
case 'd':
636636
php_sprintf_appendint(&result, &outpos,
637-
zval_get_long(tmp),
638-
width, padding, alignment,
639-
always_sign);
637+
zval_get_long_ex(tmp, /* is_strict */ true),
638+
width, padding, alignment, always_sign);
640639
break;
641640

642641
case 'u':
643642
php_sprintf_appenduint(&result, &outpos,
644-
zval_get_long(tmp),
645-
width, padding, alignment);
643+
zval_get_long_ex(tmp, /* is_strict */ true),
644+
width, padding, alignment);
646645
break;
647646

648647
case 'e':
@@ -663,35 +662,31 @@ php_formatted_print(char *format, size_t format_len, zval *args, int argc, int n
663662

664663
case 'c':
665664
php_sprintf_appendchar(&result, &outpos,
666-
(char) zval_get_long(tmp));
665+
(char) zval_get_long_ex(tmp, /* is_strict */ true));
667666
break;
668667

669668
case 'o':
670669
php_sprintf_append2n(&result, &outpos,
671-
zval_get_long(tmp),
672-
width, padding, alignment, 3,
673-
hexchars, expprec);
670+
zval_get_long_ex(tmp, /* is_strict */ true),
671+
width, padding, alignment, 3, hexchars, expprec);
674672
break;
675673

676674
case 'x':
677675
php_sprintf_append2n(&result, &outpos,
678-
zval_get_long(tmp),
679-
width, padding, alignment, 4,
680-
hexchars, expprec);
676+
zval_get_long_ex(tmp, /* is_strict */ true),
677+
width, padding, alignment, 4, hexchars, expprec);
681678
break;
682679

683680
case 'X':
684681
php_sprintf_append2n(&result, &outpos,
685-
zval_get_long(tmp),
686-
width, padding, alignment, 4,
687-
HEXCHARS, expprec);
682+
zval_get_long_ex(tmp, /* is_strict */ true),
683+
width, padding, alignment, 4, HEXCHARS, expprec);
688684
break;
689685

690686
case 'b':
691687
php_sprintf_append2n(&result, &outpos,
692-
zval_get_long(tmp),
693-
width, padding, alignment, 1,
694-
hexchars, expprec);
688+
zval_get_long_ex(tmp, /* is_strict */ true),
689+
width, padding, alignment, 1, hexchars, expprec);
695690
break;
696691

697692
case '%':

0 commit comments

Comments
 (0)