Andreas Rheinhardt: > In case an AVBPrint was not complete, icecast_open() would free some > buffers that have not been allocated yet instead of freeing the data of > the AVBPrint (if they have been allocated). Because this error does not > trigger a jump to the general cleanup section any more, one can moreover > remove a (now unnecessary) initialization of a pointer. > > Furthermore, finalizing an AVBPrint can fail (namely when the string > inside the AVBPrint has not been allocated yet) and so this needs to be > checked. > > Signed-off-by: Andreas Rheinhardt <andreas.rheinha...@gmail.com> > --- > libavformat/icecast.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/libavformat/icecast.c b/libavformat/icecast.c > index d2198b78ec..052cd37f3e 100644 > --- a/libavformat/icecast.c > +++ b/libavformat/icecast.c > @@ -89,7 +89,7 @@ static int icecast_open(URLContext *h, const char *uri, int > flags) > > // URI part variables > char h_url[1024], host[1024], auth[1024], path[1024]; > - char *headers = NULL, *user = NULL; > + char *headers, *user = NULL; > int port, ret; > AVBPrint bp; > > @@ -105,10 +105,11 @@ static int icecast_open(URLContext *h, const char *uri, > int flags) > cat_header(&bp, "Ice-Genre", s->genre); > cat_header(&bp, "Ice-Public", s->public ? "1" : "0"); > if (!av_bprint_is_complete(&bp)) { > - ret = AVERROR(ENOMEM); > - goto cleanup; > + av_bprint_finalize(&bp, NULL); > + return AVERROR(ENOMEM); > } > - av_bprint_finalize(&bp, &headers); > + if ((ret = av_bprint_finalize(&bp, &headers)) < 0) > + return ret; > > // Set options > av_dict_set(&opt_dict, "method", s->legacy_icecast ? "SOURCE" : "PUT", > 0); > Ping.
- Andreas _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".