diff --git a/stream/freesdp/parser.c b/stream/freesdp/parser.c index dcb94d2be8..394c80f9e0 100644 --- a/stream/freesdp/parser.c +++ b/stream/freesdp/parser.c @@ -479,9 +479,9 @@ fsdp_parse (const char *text_description, fsdp_description_t * dsc) { /* ignore unknown attributes, but provide access to them */ *longfsdp_buf = '\0'; - strncat (longfsdp_buf, fsdp_buf[0], MAXLONGFIELDLEN); - strncat (longfsdp_buf, ":", MAXLONGFIELDLEN); - strncat (longfsdp_buf, fsdp_buf[1], MAXLONGFIELDLEN); + strncat (longfsdp_buf, fsdp_buf[0], MAXLONGFIELDLEN-1); + strncat (longfsdp_buf, ":", MAXLONGFIELDLEN-strlen(longfsdp_buf)-1); + strncat (longfsdp_buf, fsdp_buf[1], MAXLONGFIELDLEN-strlen(longfsdp_buf)-1); if (NULL == dsc->unidentified_attributes) { dsc->unidentified_attributes_count = 0; @@ -515,7 +515,7 @@ fsdp_parse (const char *text_description, fsdp_description_t * dsc) { /* ignore unknown attributes, but provide access to them */ *longfsdp_buf = '\0'; - strncat (longfsdp_buf, fsdp_buf[0], MAXLONGFIELDLEN); + strncat (longfsdp_buf, fsdp_buf[0], MAXLONGFIELDLEN-1); if (NULL == dsc->unidentified_attributes) { dsc->unidentified_attributes_count = 0; @@ -868,7 +868,7 @@ fsdp_parse (const char *text_description, fsdp_description_t * dsc) { /* ignore unknown attributes, but provide access to them */ *longfsdp_buf = '\0'; - strncat (longfsdp_buf, fsdp_buf[0], MAXLONGFIELDLEN); + strncat (longfsdp_buf, fsdp_buf[0], MAXLONGFIELDLEN-1); if (NULL == media->unidentified_attributes) { media->unidentified_attributes_count = 0;