diff options
-rw-r--r-- | ext/pdo_dblib/dblib_driver.c | 5 | ||||
-rw-r--r-- | ext/pdo_dblib/pdo_dblib.c | 8 |
2 files changed, 6 insertions, 7 deletions
diff --git a/ext/pdo_dblib/dblib_driver.c b/ext/pdo_dblib/dblib_driver.c index fb0d6d3a53..9baedbe9d2 100644 --- a/ext/pdo_dblib/dblib_driver.c +++ b/ext/pdo_dblib/dblib_driver.c @@ -290,11 +290,6 @@ static int pdo_dblib_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_ } } - /* - * FreeTDS will not return FAIL but will segfault on passwords longer than 30 chars - */ - if(strlen(dbh->password) > 30) dbh->password[30] = 0; - if (dbh->password) { if(FAIL == DBSETLPWD(H->login, dbh->password)) { goto cleanup; diff --git a/ext/pdo_dblib/pdo_dblib.c b/ext/pdo_dblib/pdo_dblib.c index ed79aea20d..bc5d364ed3 100644 --- a/ext/pdo_dblib/pdo_dblib.c +++ b/ext/pdo_dblib/pdo_dblib.c @@ -93,8 +93,12 @@ int error_handler(DBPROCESS *dbproc, int severity, int dberr, char *state = "HY000"; TSRMLS_FETCH(); - einfo = (pdo_dblib_err*)dbgetuserdata(dbproc); - if (!einfo) einfo = &DBLIB_G(err); + if(dbproc) { + einfo = (pdo_dblib_err*)dbgetuserdata(dbproc); + if (!einfo) einfo = &DBLIB_G(err); + } else { + einfo = &DBLIB_G(err); + } einfo->severity = severity; einfo->oserr = oserr; |