From: Ilia Alshanetsky Date: Wed, 14 Mar 2012 20:20:33 +0000 (+0000) Subject: Fixed bug #61212 (PDO ODBC Segfaults on SQL_SUCESS_WITH_INFO). X-Git-Tag: PHP-5.4.1-RC1~35 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0af900f976c73c49ea1cdcc09458eba5a514617e;p=php Fixed bug #61212 (PDO ODBC Segfaults on SQL_SUCESS_WITH_INFO). --- diff --git a/NEWS b/NEWS index 873ed04873..c682466b5c 100644 --- a/NEWS +++ b/NEWS @@ -75,6 +75,9 @@ PHP NEWS . Fixed bug #61194 (PDO should export compression flag with myslqnd). (Johannes) +- PDO_odbc + . Fixed bug #61212 (PDO ODBC Segfaults on SQL_SUCESS_WITH_INFO). (Ilia) + - Phar . Fixed bug #61184 (Phar::webPhar() generates headers with trailing NUL bytes). (Nikita Popov) diff --git a/ext/pdo_odbc/odbc_stmt.c b/ext/pdo_odbc/odbc_stmt.c index aabe3dcc36..4e039d2a74 100755 --- a/ext/pdo_odbc/odbc_stmt.c +++ b/ext/pdo_odbc/odbc_stmt.c @@ -637,12 +637,14 @@ static int odbc_stmt_get_col(pdo_stmt_t *stmt, int colno, char **ptr, unsigned l if (C->fetched_len != SQL_NO_TOTAL) { /* use size suggested by the driver, if it knows it */ - alloced = C->fetched_len + 1; + buf = emalloc(C->fetched_len + 1); + memcpy(buf, C->data, C->fetched_len); + buf[C->fetched_len] = 0; + used = C->fetched_len; + } else { + buf = estrndup(C->data, 256); + used = 255; /* not 256; the driver NUL terminated the buffer */ } - - buf = emalloc(alloced); - memcpy(buf, C->data, 256); - used = 255; /* not 256; the driver NUL terminated the buffer */ do { C->fetched_len = 0;