Might want to update the buffer pointer after a realloc (or we crash)

(closes issue #14485)
 Reported by: davevg


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@176360 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.6.2
Tilghman Lesher 16 years ago
parent f8a6cc1ebc
commit 76b100354d

@ -131,6 +131,7 @@ char *__ast_str_helper2(struct ast_str **buf, size_t maxlen, const char *src, si
(*buf)->__AST_STR_USED++;
if (dynamic && (!maxlen || (escapecommas && !(maxlen - 1)))) {
char *oldbase = (*buf)->__AST_STR_STR;
size_t old = (*buf)->__AST_STR_LEN;
if (ast_str_make_space(buf, (*buf)->__AST_STR_LEN * 2)) {
/* If the buffer can't be extended, end it. */
@ -138,6 +139,11 @@ char *__ast_str_helper2(struct ast_str **buf, size_t maxlen, const char *src, si
}
/* What we extended the buffer by */
maxlen = old;
/* Update ptr, if necessary */
if ((*buf)->__AST_STR_STR != oldbase) {
ptr = ptr - oldbase + (*buf)->__AST_STR_STR;
}
}
}
if (__builtin_expect(!(maxsrc && maxlen), 0)) {

Loading…
Cancel
Save