dect
/
asterisk
Archived
13
0
Fork 0

Resolve issue with negative vs non-negative length parameters.

(closes issue #14245)
 Reported by: dveiga


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@168719 f38db490-d61c-443f-a65b-d21fe96a405b
This commit is contained in:
tilghman 2009-01-15 18:39:56 +00:00
parent aa8fdf7c8c
commit a5200683ad
1 changed files with 6 additions and 5 deletions

View File

@ -765,17 +765,18 @@ AST_INLINE_API(char *ast_str_append_escapecommas(struct ast_str **buf, size_t ma
#include <sqlext.h>
#include <sqltypes.h>
AST_INLINE_API(SQLRETURN ast_str_SQLGetData(struct ast_str **buf, size_t maxlen, SQLHSTMT StatementHandle, SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType, SQLLEN *StrLen_or_Ind),
AST_INLINE_API(SQLRETURN ast_str_SQLGetData(struct ast_str **buf, int pmaxlen, SQLHSTMT StatementHandle, SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType, SQLLEN *StrLen_or_Ind),
{
SQLRETURN res;
if (maxlen == 0) {
size_t maxlen;
if (pmaxlen == 0) {
if (SQLGetData(StatementHandle, ColumnNumber, TargetType, (*buf)->__AST_STR_STR, 0, StrLen_or_Ind) == SQL_SUCCESS_WITH_INFO) {
ast_str_make_space(buf, *StrLen_or_Ind + 1);
}
maxlen = (*buf)->__AST_STR_LEN;
} else if (maxlen > 0) {
ast_str_make_space(buf, maxlen);
} else if (pmaxlen > 0) {
ast_str_make_space(buf, pmaxlen);
}
maxlen = (*buf)->__AST_STR_LEN;
res = SQLGetData(StatementHandle, ColumnNumber, TargetType, (*buf)->__AST_STR_STR, maxlen, StrLen_or_Ind);
(*buf)->__AST_STR_USED = *StrLen_or_Ind;
return res;