Skip to content

Commit 1db2208

Browse files
authored
Merge pull request #662 from htacg/issue-655
Issue #655 - Fix unsafe use of output buffer as input param - closes #655
2 parents 5408bb7 + 6298434 commit 1db2208

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

src/messageobj.c

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,8 +158,17 @@ static TidyMessageImpl *tidyMessageCreateInitV( TidyDocImpl *doc,
158158

159159
if ( ( cfgBool(doc, TidyMuteShow) == yes ) && level <= TidyFatal )
160160
{
161-
TY_(tmbsnprintf)(result->messageOutputDefault, sizeMessageBuf, "%s (%s)", result->messageOutputDefault, TY_(tidyErrorCodeAsKey)(code) );
162-
TY_(tmbsnprintf)(result->messageOutput, sizeMessageBuf, "%s (%s)", result->messageOutput, TY_(tidyErrorCodeAsKey)(code) );
161+
/*\ Issue #655 - Unsafe to use output buffer as one of the va_list
162+
* input parameters in some snprintf implmentations.
163+
\*/
164+
ctmbstr pc = TY_(tidyErrorCodeAsKey)(code);
165+
i = TY_(tmbstrlen)(result->messageOutputDefault);
166+
if (i < sizeMessageBuf)
167+
TY_(tmbsnprintf)(result->messageOutputDefault + i, sizeMessageBuf - i, " (%s)", pc );
168+
i = TY_(tmbstrlen)(result->messageOutput);
169+
if (i < sizeMessageBuf)
170+
TY_(tmbsnprintf)(result->messageOutput + i, sizeMessageBuf - i, " (%s)", pc );
171+
i = 0;
163172
}
164173

165174
result->allowMessage = yes;

0 commit comments

Comments
 (0)