summaryrefslogtreecommitdiff
path: root/ext/sybase_ct/php_sybase_ct.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/sybase_ct/php_sybase_ct.c')
-rw-r--r--ext/sybase_ct/php_sybase_ct.c62
1 files changed, 35 insertions, 27 deletions
diff --git a/ext/sybase_ct/php_sybase_ct.c b/ext/sybase_ct/php_sybase_ct.c
index 8871988df..8382a0eab 100644
--- a/ext/sybase_ct/php_sybase_ct.c
+++ b/ext/sybase_ct/php_sybase_ct.c
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_sybase_ct.c 293036 2010-01-03 09:23:27Z sebastian $ */
+/* $Id: php_sybase_ct.c 300764 2010-06-26 16:03:39Z felipe $ */
#ifdef HAVE_CONFIG_H
@@ -180,31 +180,30 @@ const zend_function_entry sybase_functions[] = {
PHP_FE(sybase_deadlock_retry_count, arginfo_sybase_deadlock_retry_count)
#if !defined(PHP_WIN32) && !defined(HAVE_MSSQL)
- PHP_FALIAS(mssql_connect, sybase_connect, NULL)
- PHP_FALIAS(mssql_pconnect, sybase_pconnect, NULL)
- PHP_FALIAS(mssql_close, sybase_close, NULL)
- PHP_FALIAS(mssql_select_db, sybase_select_db, NULL)
- PHP_FALIAS(mssql_query, sybase_query, NULL)
- PHP_FALIAS(mssql_unbuffered_query, sybase_unbuffered_query, NULL)
- PHP_FALIAS(mssql_free_result, sybase_free_result, NULL)
- PHP_FALIAS(mssql_get_last_message, sybase_get_last_message, NULL)
- PHP_FALIAS(mssql_num_rows, sybase_num_rows, NULL)
- PHP_FALIAS(mssql_num_fields, sybase_num_fields, NULL)
- PHP_FALIAS(mssql_fetch_row, sybase_fetch_row, NULL)
- PHP_FALIAS(mssql_fetch_array, sybase_fetch_array, NULL)
- PHP_FALIAS(mssql_fetch_assoc, sybase_fetch_assoc, NULL)
- PHP_FALIAS(mssql_fetch_object, sybase_fetch_object, NULL)
- PHP_FALIAS(mssql_data_seek, sybase_data_seek, NULL)
- PHP_FALIAS(mssql_fetch_field, sybase_fetch_field, NULL)
- PHP_FALIAS(mssql_field_seek, sybase_field_seek, NULL)
- PHP_FALIAS(mssql_result, sybase_result, NULL)
- PHP_FALIAS(mssql_affected_rows, sybase_affected_rows, NULL)
- PHP_FALIAS(mssql_min_client_severity, sybase_min_client_severity, NULL)
- PHP_FALIAS(mssql_min_server_severity, sybase_min_server_severity, NULL)
- PHP_FALIAS(mssql_set_message_handler, sybase_set_message_handler, NULL)
- PHP_FALIAS(mssql_deadlock_retry_count, sybase_deadlock_retry_count, NULL)
+ PHP_FALIAS(mssql_connect, sybase_connect, arginfo_sybase_connect)
+ PHP_FALIAS(mssql_pconnect, sybase_pconnect, arginfo_sybase_pconnect)
+ PHP_FALIAS(mssql_close, sybase_close, arginfo_sybase_close)
+ PHP_FALIAS(mssql_select_db, sybase_select_db, arginfo_sybase_select_db)
+ PHP_FALIAS(mssql_query, sybase_query, arginfo_sybase_query)
+ PHP_FALIAS(mssql_unbuffered_query, sybase_unbuffered_query, arginfo_sybase_unbuffered_query)
+ PHP_FALIAS(mssql_free_result, sybase_free_result, arginfo_sybase_free_result)
+ PHP_FALIAS(mssql_get_last_message, sybase_get_last_message, arginfo_sybase_get_last_message)
+ PHP_FALIAS(mssql_num_rows, sybase_num_rows, arginfo_sybase_num_rows)
+ PHP_FALIAS(mssql_num_fields, sybase_num_fields, arginfo_sybase_num_fields)
+ PHP_FALIAS(mssql_fetch_row, sybase_fetch_row, arginfo_sybase_fetch_row)
+ PHP_FALIAS(mssql_fetch_array, sybase_fetch_array, arginfo_sybase_fetch_array)
+ PHP_FALIAS(mssql_fetch_assoc, sybase_fetch_assoc, arginfo_sybase_fetch_assoc)
+ PHP_FALIAS(mssql_fetch_object, sybase_fetch_object, arginfo_sybase_fetch_object)
+ PHP_FALIAS(mssql_data_seek, sybase_data_seek, arginfo_sybase_data_seek)
+ PHP_FALIAS(mssql_fetch_field, sybase_fetch_field, arginfo_sybase_fetch_field)
+ PHP_FALIAS(mssql_field_seek, sybase_field_seek, arginfo_sybase_field_seek)
+ PHP_FALIAS(mssql_result, sybase_result, arginfo_sybase_result)
+ PHP_FALIAS(mssql_affected_rows, sybase_affected_rows, arginfo_sybase_affected_rows)
+ PHP_FALIAS(mssql_min_client_severity, sybase_min_client_severity, arginfo_sybase_min_client_severity)
+ PHP_FALIAS(mssql_min_server_severity, sybase_min_server_severity, arginfo_sybase_min_server_severity)
+ PHP_FALIAS(mssql_set_message_handler, sybase_set_message_handler, arginfo_sybase_set_message_handler)
+ PHP_FALIAS(mssql_deadlock_retry_count, sybase_deadlock_retry_count, arginfo_sybase_deadlock_retry_count)
#endif
-
{NULL, NULL, NULL}
};
@@ -1248,8 +1247,17 @@ static int php_sybase_fetch_result_row (sybase_result *result, int numrows)
}
default: {
- /* This indicates anything else, return it as string */
- ZVAL_STRINGL(&result->data[i][j], result->tmp_buffer[j], result->lengths[j]- 1, 1);
+ /* This indicates anything else, return it as string
+ * FreeTDS doesn't correctly set result->indicators[j] correctly
+ * for NULL fields in some version in conjunction with ASE 12.5
+ * but instead sets result->lengths[j] to 0, which would lead to
+ * a negative memory allocation (and thus a segfault).
+ */
+ if (result->lengths[j] < 1) {
+ ZVAL_NULL(&result->data[i][j]);
+ } else {
+ ZVAL_STRINGL(&result->data[i][j], result->tmp_buffer[j], result->lengths[j]- 1, 1);
+ }
break;
}
}