From c6cb67b94129ee4846aa7885d788c5c314577fd3 Mon Sep 17 00:00:00 2001 From: Tilghman Lesher Date: Thu, 15 Jan 2009 18:39:56 +0000 Subject: [PATCH] Resolve issue with negative vs non-negative length parameters. (closes issue #14245) Reported by: dveiga git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@168719 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- include/asterisk/strings.h | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/include/asterisk/strings.h b/include/asterisk/strings.h index bf3cf32363..53302874e9 100644 --- a/include/asterisk/strings.h +++ b/include/asterisk/strings.h @@ -765,17 +765,18 @@ AST_INLINE_API(char *ast_str_append_escapecommas(struct ast_str **buf, size_t ma #include #include -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;