Browse Source

TT#14008 call g_string_set_size before grabbing pointer

closes #1412

Change-Id: I02f97aa05788401586848cb36421f65828968864
pull/1421/head
Richard Fuchs 4 years ago
parent
commit
219982ba06
1 changed files with 4 additions and 3 deletions
  1. +4
    -3
      daemon/rtcp.c

+ 4
- 3
daemon/rtcp.c View File

@ -1449,8 +1449,8 @@ static GString *rtcp_sender_report(struct ssrc_sender_report *ssr,
while (rrs->length) { while (rrs->length) {
struct ssrc_ctx *s = g_queue_pop_head(rrs); struct ssrc_ctx *s = g_queue_pop_head(rrs);
if (i < 30) { if (i < 30) {
struct report_block *rr = (void *) ret->str + ret->len;
g_string_set_size(ret, ret->len + sizeof(*rr));
g_string_set_size(ret, ret->len + sizeof(struct report_block));
struct report_block *rr = (void *) ret->str + ret->len - sizeof(struct report_block);
// XXX unify with transcode_rr // XXX unify with transcode_rr
@ -1503,6 +1503,7 @@ static GString *rtcp_sender_report(struct ssrc_sender_report *ssr,
i++; i++;
} }
sr = (void *) ret->str; // reacquire ptr after g_string_set_size
sr->rtcp.header.count = n; sr->rtcp.header.count = n;
sr->rtcp.header.length = htons((ret->len >> 2) - 1); sr->rtcp.header.length = htons((ret->len >> 2) - 1);
@ -1520,8 +1521,8 @@ static GString *rtcp_sender_report(struct ssrc_sender_report *ssr,
assert(sizeof(*sdes) == 24); assert(sizeof(*sdes) == 24);
sdes = (void *) ret->str + ret->len;
g_string_set_size(ret, ret->len + sizeof(*sdes)); g_string_set_size(ret, ret->len + sizeof(*sdes));
sdes = (void *) ret->str + ret->len - sizeof(*sdes);
*sdes = (__typeof(*sdes)) { *sdes = (__typeof(*sdes)) {
.sdes.header.version = 2, .sdes.header.version = 2,


Loading…
Cancel
Save