@@ -1100,13 +1100,25 @@ PHP_FUNCTION(mysqli_begin_transaction)
1100
1100
zval * mysql_link ;
1101
1101
long flags = TRANS_START_NO_OPT ;
1102
1102
char * name = NULL ;
1103
- int name_len = 0 ;
1103
+ int name_len = -1 ;
1104
+ zend_bool err = FALSE;
1104
1105
1105
1106
if (zend_parse_method_parameters (ZEND_NUM_ARGS () TSRMLS_CC , getThis (), "O|ls" , & mysql_link , mysqli_link_class_entry , & flags , & name , & name_len ) == FAILURE ) {
1106
1107
return ;
1107
1108
}
1108
1109
MYSQLI_FETCH_RESOURCE_CONN (mysql , & mysql_link , MYSQLI_STATUS_VALID );
1109
-
1110
+ if (flags < 0 ) {
1111
+ php_error_docref (NULL TSRMLS_CC , E_WARNING , "Invalid value for parameter flags (%ld)" , flags );
1112
+ err = TRUE;
1113
+ }
1114
+ if (!name || !name_len ) {
1115
+ php_error_docref (NULL TSRMLS_CC , E_WARNING , "Savepoint name cannot be empty" );
1116
+ err = TRUE;
1117
+ }
1118
+ if (TRUE == err ) {
1119
+ RETURN_FALSE ;
1120
+ }
1121
+
1110
1122
#if !defined(MYSQLI_USE_MYSQLND )
1111
1123
if (mysqli_begin_transaction_libmysql (mysql -> mysql , flags , name )) {
1112
1124
RETURN_FALSE ;
@@ -1143,12 +1155,16 @@ PHP_FUNCTION(mysqli_savepoint)
1143
1155
MY_MYSQL * mysql ;
1144
1156
zval * mysql_link ;
1145
1157
char * name = NULL ;
1146
- int name_len = 0 ;
1158
+ int name_len = -1 ;
1147
1159
1148
1160
if (zend_parse_method_parameters (ZEND_NUM_ARGS () TSRMLS_CC , getThis (), "Os" , & mysql_link , mysqli_link_class_entry , & name , & name_len ) == FAILURE ) {
1149
1161
return ;
1150
1162
}
1151
1163
MYSQLI_FETCH_RESOURCE_CONN (mysql , & mysql_link , MYSQLI_STATUS_VALID );
1164
+ if (!name || !name_len ) {
1165
+ php_error_docref (NULL TSRMLS_CC , E_WARNING , "Savepoint name cannot be empty" );
1166
+ RETURN_FALSE ;
1167
+ }
1152
1168
1153
1169
#if !defined(MYSQLI_USE_MYSQLND )
1154
1170
if (mysqli_savepoint_libmysql (mysql -> mysql , name , FALSE)) {
@@ -1169,14 +1185,15 @@ PHP_FUNCTION(mysqli_release_savepoint)
1169
1185
MY_MYSQL * mysql ;
1170
1186
zval * mysql_link ;
1171
1187
char * name = NULL ;
1172
- int name_len = 0 ;
1188
+ int name_len = -1 ;
1173
1189
1174
1190
if (zend_parse_method_parameters (ZEND_NUM_ARGS () TSRMLS_CC , getThis (), "Os" , & mysql_link , mysqli_link_class_entry , & name , & name_len ) == FAILURE ) {
1175
1191
return ;
1176
1192
}
1177
1193
MYSQLI_FETCH_RESOURCE_CONN (mysql , & mysql_link , MYSQLI_STATUS_VALID );
1178
1194
if (!name || !name_len ) {
1179
- php_error_docref (NULL TSRMLS_CC , E_WARNING , "Savepoint name not provided" );
1195
+ php_error_docref (NULL TSRMLS_CC , E_WARNING , "Savepoint name cannot be empty" );
1196
+ RETURN_FALSE ;
1180
1197
}
1181
1198
#if !defined(MYSQLI_USE_MYSQLND )
1182
1199
if (mysqli_savepoint_libmysql (mysql -> mysql , name , TRUE)) {
0 commit comments