Skip to content

Commit 18407e2

Browse files
committed
Fix parameter parsing
1 parent df9c2bd commit 18407e2

File tree

8 files changed

+74
-37
lines changed

8 files changed

+74
-37
lines changed

ext/intl/calendar/calendar_methods.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,7 @@ U_CFUNC PHP_FUNCTION(intlcal_set)
387387
CALENDAR_METHOD_INIT_VARS;
388388

389389
object = getThis();
390-
390+
391391
/* must come before zpp because zpp would convert the args in the stack to 0 */
392392
if (ZEND_NUM_ARGS() > (object ? 6 : 7) ||
393393
zend_get_parameters_array_ex(ZEND_NUM_ARGS(), args) == FAILURE) {
@@ -875,7 +875,7 @@ U_CFUNC PHP_FUNCTION(intlcal_set_first_day_of_week)
875875

876876
if (zend_parse_method_parameters(ZEND_NUM_ARGS(), getThis(),
877877
"Ol", &object, Calendar_ce_ptr, &dow) == FAILURE) {
878-
RETURN_FALSE;
878+
return;
879879
}
880880

881881
if (dow < UCAL_SUNDAY || dow > UCAL_SATURDAY) {
@@ -964,7 +964,7 @@ U_CFUNC PHP_FUNCTION(intlcal_get_repeated_wall_time_option)
964964

965965
if (zend_parse_method_parameters(ZEND_NUM_ARGS(), getThis(),
966966
"O", &object, Calendar_ce_ptr) == FAILURE) {
967-
RETURN_FALSE;
967+
return;
968968
}
969969

970970
CALENDAR_METHOD_FETCH_OBJECT;
@@ -1049,7 +1049,7 @@ U_CFUNC PHP_FUNCTION(intlcal_from_date_time)
10491049

10501050
if (zend_parse_parameters(ZEND_NUM_ARGS(), "z|s!",
10511051
&zv_arg, &locale_str, &locale_str_len) == FAILURE) {
1052-
return();
1052+
return;
10531053
}
10541054

10551055
if (!(Z_TYPE_P(zv_arg) == IS_OBJECT && instanceof_function(

ext/intl/collator/collator_create.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ static int collator_ctor(INTERNAL_FUNCTION_PARAMETERS)
3636
if( zend_parse_parameters( ZEND_NUM_ARGS(), "s",
3737
&locale, &locale_len ) == FAILURE )
3838
{
39-
return;
39+
return FAILURE;
4040
}
4141

4242
INTL_CHECK_LOCALE_LEN_OR_FAILURE(locale_len);

ext/intl/dateformat/dateformat_create.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ static int datefmt_ctor(INTERNAL_FUNCTION_PARAMETERS)
7070
if (zend_parse_parameters(ZEND_NUM_ARGS(), "s!ll|zzs",
7171
&locale_str, &locale_len, &date_type, &time_type, &timezone_zv,
7272
&calendar_zv, &pattern_str, &pattern_str_len) == FAILURE) {
73-
return;
73+
return FAILURE;
7474
}
7575

7676
DATE_FORMAT_METHOD_FETCH_OBJECT_NO_CHECK;

ext/intl/formatter/formatter_main.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ static int numfmt_ctor(INTERNAL_FUNCTION_PARAMETERS)
3737
if( zend_parse_parameters( ZEND_NUM_ARGS(), "sl|s",
3838
&locale, &locale_len, &style, &pattern, &pattern_len ) == FAILURE )
3939
{
40-
return;
40+
return FAILURE;
4141
}
4242

4343
INTL_CHECK_LOCALE_LEN_OR_FAILURE(locale_len);

ext/intl/msgformat/msgformat.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ static int msgfmt_ctor(INTERNAL_FUNCTION_PARAMETERS)
4141
if( zend_parse_parameters( ZEND_NUM_ARGS(), "ss",
4242
&locale, &locale_len, &pattern, &pattern_len ) == FAILURE )
4343
{
44-
return;
44+
return FAILURE;
4545
}
4646

4747
INTL_CHECK_LOCALE_LEN_OR_FAILURE(locale_len);

ext/intl/resourcebundle/resourcebundle_class.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ static int resourcebundle_ctor(INTERNAL_FUNCTION_PARAMETERS)
8989
if( zend_parse_parameters( ZEND_NUM_ARGS(), "s!s!|b",
9090
&locale, &locale_len, &bundlename, &bundlename_len, &fallback ) == FAILURE )
9191
{
92-
return;
92+
return FAILURE;
9393
}
9494

9595
INTL_CHECK_LOCALE_LEN_OR_FAILURE(locale_len);

ext/intl/timezone/timezone_methods.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -346,12 +346,14 @@ U_CFUNC PHP_FUNCTION(intltz_get_equivalent_id)
346346
zend_long index;
347347
intl_error_reset(NULL);
348348

349-
if (zend_parse_parameters(ZEND_NUM_ARGS(), "sl",
350-
&str_id, &str_id_len, &index) == FAILURE ||
351-
index < (zend_long)INT32_MIN || index > (zend_long)INT32_MAX) {
349+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "sl", &str_id, &str_id_len, &index) == FAILURE) {
352350
return;
353351
}
354352

353+
if (index < (zend_long)INT32_MIN || index > (zend_long)INT32_MAX) {
354+
RETURN_NULL();
355+
}
356+
355357
UErrorCode status = UErrorCode();
356358
UnicodeString id;
357359
if (intl_stringFromChar(id, str_id, str_id_len, &status) == FAILURE) {

ext/intl/uchar/uchar.c

Lines changed: 60 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,14 @@ IC_METHOD(chr) {
5555
char buffer[5];
5656
int buffer_len = 0;
5757

58-
if ((zend_parse_parameters(ZEND_NUM_ARGS(), "z", &zcp) == FAILURE) ||
59-
(convert_cp(&cp, zcp) == FAILURE)) {
58+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "z", &zcp) == FAILURE) {
6059
return;
6160
}
6261

62+
if (convert_cp(&cp, zcp) == FAILURE) {
63+
RETURN_NULL();
64+
}
65+
6366
/* We can use unsafe because we know the codepoint is in valid range
6467
* and that 4 bytes is enough for any unicode point
6568
*/
@@ -80,11 +83,14 @@ IC_METHOD(ord) {
8083
UChar32 cp;
8184
zval *zcp;
8285

83-
if ((zend_parse_parameters(ZEND_NUM_ARGS(), "z", &zcp) == FAILURE) ||
84-
(convert_cp(&cp, zcp) == FAILURE)) {
86+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "z", &zcp) == FAILURE) {
8587
return;
8688
}
8789

90+
if (convert_cp(&cp, zcp) == FAILURE) {
91+
RETURN_NULL();
92+
}
93+
8894
RETURN_LONG(cp);
8995
}
9096
/* }}} */
@@ -99,11 +105,14 @@ IC_METHOD(hasBinaryProperty) {
99105
zend_long prop;
100106
zval *zcp;
101107

102-
if ((zend_parse_parameters(ZEND_NUM_ARGS(), "zl", &zcp, &prop) == FAILURE) ||
103-
(convert_cp(&cp, zcp) == FAILURE)) {
108+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "zl", &zcp, &prop) == FAILURE) {
104109
return;
105110
}
106111

112+
if (convert_cp(&cp, zcp) == FAILURE) {
113+
RETURN_NULL();
114+
}
115+
107116
RETURN_BOOL(u_hasBinaryProperty(cp, (UProperty)prop));
108117
}
109118
/* }}} */
@@ -118,11 +127,14 @@ IC_METHOD(getIntPropertyValue) {
118127
zend_long prop;
119128
zval *zcp;
120129

121-
if ((zend_parse_parameters(ZEND_NUM_ARGS(), "zl", &zcp, &prop) == FAILURE) ||
122-
(convert_cp(&cp, zcp) == FAILURE)) {
130+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "zl", &zcp, &prop) == FAILURE) {
123131
return;
124132
}
125133

134+
if (convert_cp(&cp, zcp) == FAILURE) {
135+
RETURN_NULL();
136+
}
137+
126138
RETURN_LONG(u_getIntPropertyValue(cp, (UProperty)prop));
127139
}
128140
/* }}} */
@@ -165,11 +177,14 @@ IC_METHOD(getNumericValue) {
165177
UChar32 cp;
166178
zval *zcp;
167179

168-
if ((zend_parse_parameters(ZEND_NUM_ARGS(), "z", &zcp) == FAILURE) ||
169-
(convert_cp(&cp, zcp) == FAILURE)) {
180+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "z", &zcp) == FAILURE) {
170181
return;
171182
}
172183

184+
if (convert_cp(&cp, zcp) == FAILURE) {
185+
RETURN_NULL();
186+
}
187+
173188
RETURN_DOUBLE(u_getNumericValue(cp));
174189
}
175190
/* }}} */
@@ -227,11 +242,14 @@ IC_METHOD(getBlockCode) {
227242
UChar32 cp;
228243
zval *zcp;
229244

230-
if ((zend_parse_parameters(ZEND_NUM_ARGS(), "z", &zcp) == FAILURE) ||
231-
(convert_cp(&cp, zcp) == FAILURE)) {
245+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "z", &zcp) == FAILURE) {
232246
return;
233247
}
234248

249+
if (convert_cp(&cp, zcp) == FAILURE) {
250+
RETURN_NULL();
251+
}
252+
235253
RETURN_LONG(ublock_getCode(cp));
236254
}
237255
/* }}} */
@@ -249,11 +267,14 @@ IC_METHOD(charName) {
249267
zend_string *buffer = NULL;
250268
int32_t buffer_len;
251269

252-
if ((zend_parse_parameters(ZEND_NUM_ARGS(), "z|l", &zcp, &nameChoice) == FAILURE) ||
253-
(convert_cp(&cp, zcp) == FAILURE)) {
270+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "z|l", &zcp, &nameChoice) == FAILURE) {
254271
return;
255272
}
256273

274+
if (convert_cp(&cp, zcp) == FAILURE) {
275+
RETURN_NULL();
276+
}
277+
257278
buffer_len = u_charName(cp, (UCharNameChoice)nameChoice, NULL, 0, &error);
258279
buffer = zend_string_alloc(buffer_len, 0);
259280
error = U_ZERO_ERROR;
@@ -332,12 +353,14 @@ IC_METHOD(enumCharNames) {
332353
zend_long nameChoice = U_UNICODE_CHAR_NAME;
333354
UErrorCode error = U_ZERO_ERROR;
334355

335-
if ((zend_parse_parameters(ZEND_NUM_ARGS(), "zzf|l", &zstart, &zlimit, &context.fci, &context.fci_cache, &nameChoice) == FAILURE) ||
336-
(convert_cp(&start, zstart) == FAILURE) ||
337-
(convert_cp(&limit, zlimit) == FAILURE)) {
356+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "zzf|l", &zstart, &zlimit, &context.fci, &context.fci_cache, &nameChoice) == FAILURE) {
338357
return;
339358
}
340359

360+
if (convert_cp(&start, zstart) == FAILURE || convert_cp(&limit, zlimit) == FAILURE) {
361+
RETURN_NULL();
362+
}
363+
341364
u_enumCharNames(start, limit, (UEnumCharNamesFn*)enumCharNames_callback, &context, nameChoice, &error);
342365
INTL_CHECK_STATUS(error, NULL);
343366
}
@@ -437,11 +460,14 @@ IC_METHOD(foldCase) {
437460
zval *zcp;
438461
zend_long options = U_FOLD_CASE_DEFAULT;
439462

440-
if ((zend_parse_parameters(ZEND_NUM_ARGS(), "z|l", &zcp, &options) == FAILURE) ||
441-
(convert_cp(&cp, zcp) == FAILURE)) {
463+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "z|l", &zcp, &options) == FAILURE) {
442464
return;
443465
}
444466

467+
if (convert_cp(&cp, zcp) == FAILURE) {
468+
RETURN_NULL();
469+
}
470+
445471
ret = u_foldCase(cp, options);
446472
if (Z_TYPE_P(zcp) == IS_STRING) {
447473
char buffer[5];
@@ -466,11 +492,14 @@ IC_METHOD(digit) {
466492
zend_long radix = 10;
467493
int ret;
468494

469-
if ((zend_parse_parameters(ZEND_NUM_ARGS(), "z|l", &zcp, &radix) == FAILURE) ||
470-
(convert_cp(&cp, zcp) == FAILURE)) {
495+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "z|l", &zcp, &radix) == FAILURE) {
471496
return;
472497
}
473498

499+
if (convert_cp(&cp, zcp) == FAILURE) {
500+
RETURN_NULL();
501+
}
502+
474503
ret = u_digit(cp, radix);
475504
if (ret < 0) {
476505
intl_error_set_code(NULL, U_ILLEGAL_ARGUMENT_ERROR);
@@ -507,11 +536,14 @@ IC_METHOD(charAge) {
507536
UVersionInfo version;
508537
int i;
509538

510-
if ((zend_parse_parameters(ZEND_NUM_ARGS(), "z", &zcp) == FAILURE) ||
511-
(convert_cp(&cp, zcp) == FAILURE)) {
539+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "z", &zcp) == FAILURE) {
512540
return;
513541
}
514542

543+
if (convert_cp(&cp, zcp) == FAILURE) {
544+
RETURN_NULL();
545+
}
546+
515547
u_charAge(cp, version);
516548
array_init(return_value);
517549
for(i = 0; i < U_MAX_VERSION_LENGTH; ++i) {
@@ -548,11 +580,14 @@ IC_METHOD(getFC_NFKC_Closure) {
548580
int32_t closure_len;
549581
UErrorCode error = U_ZERO_ERROR;
550582

551-
if ((zend_parse_parameters(ZEND_NUM_ARGS(), "z", &zcp) == FAILURE) ||
552-
(convert_cp(&cp, zcp) == FAILURE)) {
583+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "z", &zcp) == FAILURE) {
553584
return;
554585
}
555586

587+
if (convert_cp(&cp, zcp) == FAILURE) {
588+
RETURN_NULL();
589+
}
590+
556591
closure_len = u_getFC_NFKC_Closure(cp, NULL, 0, &error);
557592
if (closure_len == 0) {
558593
RETURN_EMPTY_STRING();

0 commit comments

Comments
 (0)