Skip to content

Commit a1c1736

Browse files
guirishnikic
guirish
authored andcommitted
Fix MySQL local infile / attr handling on big endian systems
Make sure pointer types match what is used by libmysql everywhere. Closes GH-5380.
1 parent 79a36ff commit a1c1736

File tree

4 files changed

+12
-12
lines changed

4 files changed

+12
-12
lines changed

ext/mysqli/mysqli_api.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2327,7 +2327,7 @@ PHP_FUNCTION(mysqli_stmt_attr_set)
23272327
#if MYSQL_VERSION_ID >= 50107
23282328
my_bool mode_b;
23292329
#endif
2330-
zend_ulong mode;
2330+
unsigned long mode;
23312331
zend_long attr;
23322332
void *mode_p;
23332333

@@ -2370,7 +2370,7 @@ PHP_FUNCTION(mysqli_stmt_attr_get)
23702370
{
23712371
MY_STMT *stmt;
23722372
zval *mysql_stmt;
2373-
zend_ulong value = 0;
2373+
unsigned long value = 0;
23742374
zend_long attr;
23752375
int rc;
23762376

@@ -2387,7 +2387,7 @@ PHP_FUNCTION(mysqli_stmt_attr_get)
23872387
if (attr == STMT_ATTR_UPDATE_MAX_LENGTH)
23882388
value = *((my_bool *)&value);
23892389
#endif
2390-
RETURN_LONG((zend_ulong)value);
2390+
RETURN_LONG((unsigned long)value);
23912391
}
23922392
/* }}} */
23932393

ext/mysqli/mysqli_nonapi.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -305,8 +305,8 @@ void mysqli_common_connect(INTERNAL_FUNCTION_PARAMETERS, zend_bool is_real_conne
305305
#if !defined(MYSQLI_USE_MYSQLND)
306306
mysql->mysql->reconnect = MyG(reconnect);
307307
#endif
308-
309-
mysql_options(mysql->mysql, MYSQL_OPT_LOCAL_INFILE, (char *)&MyG(allow_local_infile));
308+
unsigned int allow_local_infile = MyG(allow_local_infile);
309+
mysql_options(mysql->mysql, MYSQL_OPT_LOCAL_INFILE, (char *)&allow_local_infile);
310310

311311
end:
312312
if (!mysqli_resource) {

ext/mysqlnd/mysqlnd_ps.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1899,8 +1899,8 @@ MYSQLND_METHOD(mysqlnd_stmt, attr_set)(MYSQLND_STMT * const s,
18991899
break;
19001900
}
19011901
case STMT_ATTR_CURSOR_TYPE: {
1902-
unsigned int ival = *(unsigned int *) value;
1903-
if (ival > (zend_ulong) CURSOR_TYPE_READ_ONLY) {
1902+
unsigned long ival = *(unsigned long *) value;
1903+
if (ival > (unsigned long) CURSOR_TYPE_READ_ONLY) {
19041904
SET_CLIENT_ERROR(stmt->error_info, CR_NOT_IMPLEMENTED, UNKNOWN_SQLSTATE, "Not implemented");
19051905
DBG_INF("FAIL");
19061906
DBG_RETURN(FAIL);
@@ -1909,7 +1909,7 @@ MYSQLND_METHOD(mysqlnd_stmt, attr_set)(MYSQLND_STMT * const s,
19091909
break;
19101910
}
19111911
case STMT_ATTR_PREFETCH_ROWS: {
1912-
unsigned int ival = *(unsigned int *) value;
1912+
unsigned long ival = *(unsigned long *) value;
19131913
if (ival == 0) {
19141914
ival = MYSQLND_DEFAULT_PREFETCH_ROWS;
19151915
} else if (ival > 1) {
@@ -1948,10 +1948,10 @@ MYSQLND_METHOD(mysqlnd_stmt, attr_get)(const MYSQLND_STMT * const s,
19481948
*(zend_bool *) value= stmt->update_max_length;
19491949
break;
19501950
case STMT_ATTR_CURSOR_TYPE:
1951-
*(zend_ulong *) value= stmt->flags;
1951+
*(unsigned long *) value= stmt->flags;
19521952
break;
19531953
case STMT_ATTR_PREFETCH_ROWS:
1954-
*(zend_ulong *) value= stmt->prefetch_rows;
1954+
*(unsigned long *) value= stmt->prefetch_rows;
19551955
break;
19561956
default:
19571957
DBG_RETURN(FAIL);

ext/pdo_mysql/mysql_driver.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -628,7 +628,7 @@ static int pdo_mysql_handle_factory(pdo_dbh_t *dbh, zval *driver_options)
628628
/* handle MySQL options */
629629
if (driver_options) {
630630
zend_long connect_timeout = pdo_attr_lval(driver_options, PDO_ATTR_TIMEOUT, 30);
631-
zend_long local_infile = pdo_attr_lval(driver_options, PDO_MYSQL_ATTR_LOCAL_INFILE, 0);
631+
unsigned int local_infile = (unsigned int) pdo_attr_lval(driver_options, PDO_MYSQL_ATTR_LOCAL_INFILE, 0);
632632
zend_string *init_cmd = NULL;
633633
#ifndef PDO_USE_MYSQLND
634634
zend_string *default_file = NULL, *default_group = NULL;
@@ -779,7 +779,7 @@ static int pdo_mysql_handle_factory(pdo_dbh_t *dbh, zval *driver_options)
779779
} else {
780780
#if defined(MYSQL_OPT_LOCAL_INFILE) || defined(PDO_USE_MYSQLND)
781781
// in case there are no driver options disable 'local infile' explicitly
782-
zend_long local_infile = 0;
782+
unsigned int local_infile = 0;
783783
if (mysql_options(H->server, MYSQL_OPT_LOCAL_INFILE, (const char *)&local_infile)) {
784784
pdo_mysql_error(dbh);
785785
goto cleanup;

0 commit comments

Comments
 (0)