[FFmpeg-trac] #9274(undetermined:new): avio_open_dir / avio_close_dir seems to be broken

FFmpeg trac at avcodec.org
Wed Jun 2 15:33:36 EEST 2021


#9274: avio_open_dir / avio_close_dir seems to be broken
-------------------------------------+-------------------------------------
             Reporter:               |                     Type:  defect
  rudolfs.bundulis                   |
               Status:  new          |                 Priority:  normal
            Component:               |                  Version:
  undetermined                       |  unspecified
             Keywords:               |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 Summary of the bug:

 when using avio_open_dir / avio_close_dir, avio_close_dir manages to close
 fd 0, thus messing up further open calls. Found this while making a video
 filter that was enumerating a directory and used these functions for the
 enumeration. Further open() calls returned 0 and I was not able to
 understand why. Removing a call to avio_close_dir() fixed that, and then
 when debugging found that this is what happens:

 1) avio_close_dir() calls ffurl_close()
 2) ffurl_close() calls ffurl_closep()
 3) ffurl_closep() does

     if (h->is_connected && h->prot->url_close)
         ret = h->prot->url_close(h);

    where for file protocol url_close is set to file_close, which
    when invoked will call close on c->fd which has never been set in case
 of a
    directory

 For me I'll just fallback to plain POSIX calls for this and seems that
 ffmpeg code base is not using these calls anywhere, but then at least to
 save others some amount of gray hair this should either be fixed (not sure
 what is the best approach) or at least calls marked as unsafe?
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/9274>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list