Skip to content

Commit 3244e07

Browse files
committed
Merge branch 'PHP-7.4' into PHP-8.0
* PHP-7.4: Fix #81252: PDO_ODBC doesn't account for SQL_NO_TOTAL
2 parents 65e2dbd + 98049e8 commit 3244e07

File tree

2 files changed

+19
-19
lines changed

2 files changed

+19
-19
lines changed

NEWS

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ PHP NEWS
2727
. Fixed bug #81226 (Integer overflow behavior is different with JIT
2828
enabled). (Dmitry)
2929

30+
- PDO_ODBC:
31+
. Fixed bug #81252 (PDO_ODBC doesn't account for SQL_NO_TOTAL). (cmb)
32+
3033
- Shmop:
3134
. Fixed bug #81283 (shmop can't read beyond 2147483647 bytes). (cmb, Nikita)
3235

ext/pdo_odbc/odbc_stmt.c

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -499,26 +499,23 @@ static int odbc_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data *p
499499
zval_ptr_dtor(parameter);
500500
ZVAL_NULL(parameter);
501501

502-
switch (P->len) {
503-
case SQL_NULL_DATA:
504-
break;
505-
default:
506-
switch (pdo_odbc_ucs22utf8(stmt, P->is_unicode, P->outbuf, P->len, &ulen)) {
507-
case PDO_ODBC_CONV_FAIL:
508-
/* something fishy, but allow it to come back as binary */
509-
case PDO_ODBC_CONV_NOT_REQUIRED:
510-
srcbuf = P->outbuf;
511-
srclen = P->len;
512-
break;
513-
case PDO_ODBC_CONV_OK:
514-
srcbuf = S->convbuf;
515-
srclen = ulen;
516-
break;
517-
}
502+
if (P->len >= 0) {
503+
switch (pdo_odbc_ucs22utf8(stmt, P->is_unicode, P->outbuf, P->len, &ulen)) {
504+
case PDO_ODBC_CONV_FAIL:
505+
/* something fishy, but allow it to come back as binary */
506+
case PDO_ODBC_CONV_NOT_REQUIRED:
507+
srcbuf = P->outbuf;
508+
srclen = P->len;
509+
break;
510+
case PDO_ODBC_CONV_OK:
511+
srcbuf = S->convbuf;
512+
srclen = ulen;
513+
break;
514+
}
518515

519-
ZVAL_NEW_STR(parameter, zend_string_alloc(srclen, 0));
520-
memcpy(Z_STRVAL_P(parameter), srcbuf, srclen);
521-
Z_STRVAL_P(parameter)[Z_STRLEN_P(parameter)] = '\0';
516+
ZVAL_NEW_STR(parameter, zend_string_alloc(srclen, 0));
517+
memcpy(Z_STRVAL_P(parameter), srcbuf, srclen);
518+
Z_STRVAL_P(parameter)[Z_STRLEN_P(parameter)] = '\0';
522519
}
523520
}
524521
return 1;

0 commit comments

Comments
 (0)