|
50 | 50 | #define FETCH_ROW 1 |
51 | 51 | #define FETCH_ARRAY 2 |
52 | 52 |
|
| 53 | +// Appearantly XSQLVAR len fields can come in > 31 and < 0 depending on |
| 54 | +// fbclient-server combination |
| 55 | +#define CAP_XSQLVAR_LEN(len, str) ((len) > 31 || (len) < 0 ? MIN(31, strlen((str))) : (len)) |
| 56 | + |
53 | 57 | typedef struct { |
54 | 58 | unsigned short vary_length; |
55 | 59 | char vary_string[1]; |
@@ -1915,14 +1919,14 @@ static void _php_ibase_field_info(zval *return_value, ibase_query *ib_query, int |
1915 | 1919 | } else { |
1916 | 1920 | #endif |
1917 | 1921 | // Old API |
1918 | | - add_index_stringl(return_value, 0, var->sqlname, MIN(31, var->sqlname_length)); |
1919 | | - add_assoc_stringl(return_value, "name", var->sqlname, MIN(31, var->sqlname_length)); |
| 1922 | + add_index_stringl(return_value, 0, var->sqlname, CAP_XSQLVAR_LEN(var->sqlname_length, var->sqlname)); |
| 1923 | + add_assoc_stringl(return_value, "name", var->sqlname, CAP_XSQLVAR_LEN(var->sqlname_length, var->sqlname)); |
1920 | 1924 |
|
1921 | | - add_index_stringl(return_value, 1, var->aliasname, MIN(31, var->aliasname_length)); |
1922 | | - add_assoc_stringl(return_value, "alias", var->aliasname, MIN(31, var->aliasname_length)); |
| 1925 | + add_index_stringl(return_value, 1, var->aliasname, CAP_XSQLVAR_LEN(var->aliasname_length, var->aliasname)); |
| 1926 | + add_assoc_stringl(return_value, "alias", var->aliasname, CAP_XSQLVAR_LEN(var->aliasname_length, var->aliasname)); |
1923 | 1927 |
|
1924 | | - add_index_stringl(return_value, 2, var->relname, MIN(31, var->relname_length)); |
1925 | | - add_assoc_stringl(return_value, "relation", var->relname, MIN(31, var->relname_length)); |
| 1928 | + add_index_stringl(return_value, 2, var->relname, CAP_XSQLVAR_LEN(var->relname_length, var->relname)); |
| 1929 | + add_assoc_stringl(return_value, "relation", var->relname, CAP_XSQLVAR_LEN(var->relname_length, var->relname)); |
1926 | 1930 | #if FB_API_VER >= 40 |
1927 | 1931 | } |
1928 | 1932 | #endif |
@@ -2215,7 +2219,7 @@ static int _php_ibase_alloc_ht_aliases(ibase_query *ib_query) |
2215 | 2219 | XSQLVAR *var = &ib_query->out_sqlda->sqlvar[i]; |
2216 | 2220 |
|
2217 | 2221 | _php_ibase_insert_alias(ib_query->ht_aliases, |
2218 | | - var->aliasname, MIN(31, var->aliasname_length)); |
| 2222 | + var->aliasname, CAP_XSQLVAR_LEN(var->aliasname_length, var->aliasname)); |
2219 | 2223 | } |
2220 | 2224 | #if FB_API_VER >= 40 |
2221 | 2225 | } |
|
0 commit comments