Skip to content

Commit 6ae0ecd

Browse files
committed
Revert "fix length read from app ptr when param binding (#173)"
This reverts commit 69243d4.
1 parent 9a3fea0 commit 6ae0ecd

File tree

3 files changed

+4
-109
lines changed

3 files changed

+4
-109
lines changed

driver/convert.c

Lines changed: 4 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -3210,6 +3210,7 @@ static BOOL xstr_to_number(esodbc_stmt_st *stmt, void *data_ptr,
32103210
SQLRETURN c2sql_null(esodbc_rec_st *arec,
32113211
esodbc_rec_st *irec, char *dest, size_t *len)
32123212
{
3213+
assert(irec->concise_type == ESODBC_SQL_NULL);
32133214
if (dest) {
32143215
memcpy(dest, JSON_VAL_NULL, sizeof(JSON_VAL_NULL) - /*\0*/1);
32153216
}
@@ -4120,37 +4121,6 @@ SQLRETURN c2sql_interval(esodbc_rec_st *arec, esodbc_rec_st *irec,
41204121
# undef ASSIGN_SIGNED
41214122
}
41224123

4123-
static inline SQLLEN get_octet_len(SQLLEN *octet_len_ptr, void *data_ptr,
4124-
BOOL wide)
4125-
{
4126-
SQLLEN cnt;
4127-
4128-
assert(data_ptr);
4129-
4130-
if (! octet_len_ptr) {
4131-
/* "If [...] is a null pointer, the driver assumes that all input
4132-
* parameter values are non-NULL and that character and binary data is
4133-
* null-terminated." */
4134-
cnt = wide ? wcslen((wchar_t *)data_ptr) : strlen((char *)data_ptr);
4135-
} else {
4136-
cnt = *octet_len_ptr;
4137-
switch (cnt) {
4138-
case SQL_NTSL:
4139-
cnt = wide ? wcslen((wchar_t *)data_ptr) :
4140-
strlen((char *)data_ptr);
4141-
break;
4142-
case SQL_NULL_DATA:
4143-
BUG("converting SQL_NULL_DATA");
4144-
cnt = -1; /* UTF16/8 will fail */
4145-
break;
4146-
default: /* get characters count from octets count */
4147-
cnt /= wide ? sizeof(SQLWCHAR) : sizeof(SQLCHAR);
4148-
}
4149-
}
4150-
4151-
return cnt;
4152-
}
4153-
41544124
static SQLRETURN c2sql_cstr2qstr(esodbc_rec_st *arec, esodbc_rec_st *irec,
41554125
SQLULEN pos, char *dest, size_t *len)
41564126
{
@@ -4163,7 +4133,7 @@ static SQLRETURN c2sql_cstr2qstr(esodbc_rec_st *arec, esodbc_rec_st *irec,
41634133
/* pointer to app's buffer */
41644134
data_ptr = deferred_address(SQL_DESC_DATA_PTR, pos, arec);
41654135

4166-
cnt = get_octet_len(octet_len_ptr, data_ptr, /*wide*/FALSE);
4136+
cnt = octet_len_ptr ? *octet_len_ptr : strlen((char *)data_ptr);
41674137

41684138
if (dest) {
41694139
*dest = '"';
@@ -4197,7 +4167,7 @@ static SQLRETURN c2sql_wstr2qstr(esodbc_rec_st *arec, esodbc_rec_st *irec,
41974167
/* pointer to app's buffer */
41984168
data_ptr = deferred_address(SQL_DESC_DATA_PTR, pos, arec);
41994169

4200-
cnt = get_octet_len(octet_len_ptr, data_ptr, /*wide*/TRUE);
4170+
cnt = octet_len_ptr ? *octet_len_ptr : wcslen((wchar_t *)data_ptr);
42014171

42024172
if (dest) {
42034173
*dest = '"';
@@ -4216,7 +4186,7 @@ static SQLRETURN c2sql_wstr2qstr(esodbc_rec_st *arec, esodbc_rec_st *irec,
42164186
octets = WCS2U8((wchar_t *)data_ptr, (int)cnt, dest + !!dest,
42174187
dest ? INT_MAX : 0);
42184188
if ((err = GetLastError())) {
4219-
ERRH(stmt, "converting to multibyte string failed: 0x%x", err);
4189+
ERRH(stmt, "converting to multibyte string failed: %d", err);
42204190
RET_HDIAGS(stmt, SQL_STATE_HY000);
42214191
}
42224192
} else {

test/test_conversion_c2sql_null.cc

Lines changed: 0 additions & 45 deletions
This file was deleted.

test/test_conversion_c2sql_varchar.cc

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -141,21 +141,6 @@ TEST_F(ConvertC2SQL_Varchar, WStr2Varchar_ansi_jsonescape)
141141
ASSERT_CSTREQ(buff, expect);
142142
}
143143

144-
TEST_F(ConvertC2SQL_Varchar, CStr2Varchar_jsonescape_oct_len_ptr)
145-
{
146-
prepareStatement();
147-
148-
SQLCHAR val[] = "START_{xxx}=\"yyy\"\r__END";
149-
SQLLEN octet_len = strlen((char *)val);
150-
ret = SQLBindParameter(stmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR,
151-
SQL_VARCHAR, /*size*/35, /*decdigits*/0, val, sizeof(val),
152-
&octet_len);
153-
ASSERT_TRUE(SQL_SUCCEEDED(ret));
154-
155-
//assertRequest("[{\"type\": \"KEYWORD\", "
156-
// "\"value\": \"START_{xxx}=\\\"yyy\\\"\\r__END\"}]");
157-
}
158-
159144
/* note: test name used in test */
160145
TEST_F(ConvertC2SQL_Varchar, CStr2Varchar_jsonescape)
161146
{
@@ -204,21 +189,6 @@ TEST_F(ConvertC2SQL_Varchar, WStr2Varchar_u8_jsonescape)
204189
ASSERT_CSTREQ(buff, expect);
205190
}
206191

207-
TEST_F(ConvertC2SQL_Varchar, WStr2Varchar_u8_fullescape_oct_len_ptr)
208-
{
209-
prepareStatement();
210-
211-
SQLWCHAR val[] = L"äöüÄÖÜ";
212-
SQLLEN octet_len = SQL_NTSL;
213-
ret = SQLBindParameter(stmt, 1, SQL_PARAM_INPUT, SQL_C_WCHAR,
214-
SQL_VARCHAR, /*size*/35, /*decdigits*/0, val, sizeof(val),
215-
&octet_len);
216-
ASSERT_TRUE(SQL_SUCCEEDED(ret));
217-
218-
//assertRequest("[{\"type\": \"KEYWORD\", "
219-
// "\"value\": \"\u00E4\u00F6\u00FC\u00C4\u00D6\u00DC\"}]");
220-
}
221-
222192
/* note: test name used in test */
223193
TEST_F(ConvertC2SQL_Varchar, WStr2Varchar_u8_fullescape)
224194
{

0 commit comments

Comments
 (0)