Skip to content

Commit 7c52408

Browse files
authored
Fix undefined sanitizer reports for SDP (#2131)
* Fix undefined sanitizer reports for SDP * Clang-format
1 parent cfa96a9 commit 7c52408

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

src/source/PeerConnection/SessionDescription.c

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ STATUS serializeSessionDescriptionInit(PRtcSessionDescriptionInit pSessionDescri
99
PCHAR curr, tail, next;
1010
UINT32 lineLen, inputSize = 0, amountWritten;
1111

12+
// NOTE: sessionDescriptionJSON can be NULL. In this case, no writing is actually done,
13+
// but the size that it would have written is returned.
1214
CHK(pSessionDescriptionInit != NULL && sessionDescriptionJSONLen != NULL, STATUS_NULL_ARG);
1315

1416
inputSize = *sessionDescriptionJSONLen;
@@ -30,21 +32,29 @@ STATUS serializeSessionDescriptionInit(PRtcSessionDescriptionInit pSessionDescri
3032
lineLen--;
3133
}
3234

33-
amountWritten =
34-
SNPRINTF(sessionDescriptionJSON + *sessionDescriptionJSONLen, sessionDescriptionJSON == NULL ? 0 : inputSize - *sessionDescriptionJSONLen,
35-
"%*.*s%s", lineLen, lineLen, curr, SESSION_DESCRIPTION_INIT_LINE_ENDING);
35+
if (sessionDescriptionJSON == NULL) {
36+
amountWritten = SNPRINTF(NULL, 0, "%*.*s%s", lineLen, lineLen, curr, SESSION_DESCRIPTION_INIT_LINE_ENDING);
37+
} else {
38+
amountWritten = SNPRINTF(sessionDescriptionJSON + *sessionDescriptionJSONLen, inputSize - *sessionDescriptionJSONLen, "%*.*s%s", lineLen,
39+
lineLen, curr, SESSION_DESCRIPTION_INIT_LINE_ENDING);
40+
}
3641
CHK(sessionDescriptionJSON == NULL || ((inputSize - *sessionDescriptionJSONLen) >= amountWritten), STATUS_BUFFER_TOO_SMALL);
3742

3843
*sessionDescriptionJSONLen += amountWritten;
3944
curr = next + 1;
4045
}
4146

42-
amountWritten = SNPRINTF(sessionDescriptionJSON + *sessionDescriptionJSONLen,
43-
sessionDescriptionJSON == NULL ? 0 : inputSize - *sessionDescriptionJSONLen, SESSION_DESCRIPTION_INIT_TEMPLATE_TAIL);
47+
if (sessionDescriptionJSON == NULL) {
48+
amountWritten = SNPRINTF(NULL, 0, SESSION_DESCRIPTION_INIT_TEMPLATE_TAIL);
49+
} else {
50+
amountWritten = SNPRINTF(sessionDescriptionJSON + *sessionDescriptionJSONLen, inputSize - *sessionDescriptionJSONLen,
51+
SESSION_DESCRIPTION_INIT_TEMPLATE_TAIL);
52+
}
4453
CHK(sessionDescriptionJSON == NULL || ((inputSize - *sessionDescriptionJSONLen) >= amountWritten), STATUS_BUFFER_TOO_SMALL);
4554
*sessionDescriptionJSONLen += (amountWritten + 1); // NULL terminator
4655

4756
CleanUp:
57+
CHK_LOG_ERR(retStatus);
4858

4959
LEAVES();
5060
return retStatus;

0 commit comments

Comments
 (0)