commit 986b215cdb6f7ee801a41ed35e5fef08aeb33d29 from: Omar Polo date: Sat Jul 09 10:22:07 2022 UTC handle fdopen failure gracefully commit - 33e8ddf3b1df91d66664dcf0dc7011d089a74611 commit + 986b215cdb6f7ee801a41ed35e5fef08aeb33d29 blob - 7df1d378d1b826a3bab7a241cf6c9d7f257c9b0f blob + 6e913d31c9da3e22f3d7a4b78ed61aab96a41fd5 --- player_flac.c +++ player_flac.c @@ -142,12 +142,18 @@ play_flac(int fd, const char **errstr) FLAC__StreamDecoder *decoder = NULL; FLAC__StreamDecoderInitStatus init_status; - if ((f = fdopen(fd, "r")) == NULL) - err(1, "fdopen"); + if ((f = fdopen(fd, "r")) == NULL) { + *errstr = "fdopen failed"; + close(fd); + return -1; + } decoder = FLAC__stream_decoder_new(); - if (decoder == NULL) - err(1, "flac stream decoder"); + if (decoder == NULL) { + *errstr = "FLAC__stream_decoder_new() failed"; + fclose(f); + return -1; + } FLAC__stream_decoder_set_md5_checking(decoder, 1); blob - 1dfcd33df7e7825abdeae89a9a4711ecde1fcbe3 blob + 3f7581bb2de0a8daec69af42b873a2d4a2b29cac --- player_oggvorbis.c +++ player_oggvorbis.c @@ -44,8 +44,11 @@ play_oggvorbis(int fd, const char **errstr) int64_t seek = -1; int current_section, eof = 0, ret = 0; - if ((f = fdopen(fd, "r")) == NULL) - err(1, "fdopen"); + if ((f = fdopen(fd, "r")) == NULL) { + *errstr = "fdopen failed"; + close(fd); + return -1; + } if (ov_open_callbacks(f, &vf, NULL, 0, OV_CALLBACKS_NOCLOSE) < 0) { *errstr = "input is not an Ogg bitstream"; blob - 0bf3329cc72a047d61b5f62504afd5445d2b5b2d blob + 7c54607a6066686461bb5a61e212e5a379d7f4d0 --- player_opus.c +++ player_opus.c @@ -45,8 +45,11 @@ play_opus(int fd, const char **errstr) OpusFileCallbacks cb = {NULL, NULL, NULL, NULL}; int i, li, prev_li = -1, duration_set = 0; - if ((f = op_fdopen(&cb, fd, "r")) == NULL) - err(1, "fdopen"); + if ((f = op_fdopen(&cb, fd, "r")) == NULL) { + *errstr = "fdopen failed"; + close(fd); + return -1; + } of = op_open_callbacks(f, &cb, NULL, 0, &r); if (of == NULL) {