Can you elaborate a bit more why this requires more changes? My understanding is, to check for different cases and handle them differently:
1. "-" gets replaced with "fd:", and it's passed directly to "input_filename" without resolving. 2. if the path contains "://", that too gets passed on without resolving it further (handles http://, https://, ftp:// etc..) 3. Only after these two checks, resolve the "filename" and pass on to "input_filename". On Wed, 14 May 2025 at 23:40, Marton Balint <c...@passwd.hu> wrote: > > > On Wed, 14 May 2025, Nicolas George wrote: > > > Appaji (HE12025-05-14): > >> Fixes ticket: https://trac.ffmpeg.org/ticket/11574 > >> > >> Signed-off-by: Appaji <appaji12...@gmail.com> > >> --- > >> fftools/ffplay.c | 13 +++++++++++-- > >> 1 file changed, 11 insertions(+), 2 deletions(-) > >> > >> diff --git a/fftools/ffplay.c b/fftools/ffplay.c > >> index 2a572fc3aa..42f0584b55 100644 > >> --- a/fftools/ffplay.c > >> +++ b/fftools/ffplay.c > >> @@ -27,6 +27,7 @@ > >> #include "config_components.h" > >> #include <math.h> > >> #include <limits.h> > >> +#include <stdlib.h> > >> #include <signal.h> > >> #include <stdint.h> > >> > >> @@ -3623,9 +3624,17 @@ static int opt_input_file(void *optctx, const > char *filename) > >> filename, input_filename); > >> return AVERROR(EINVAL); > >> } > >> - if (!strcmp(filename, "-")) > >> + > >> + char resolved_path[PATH_MAX]; > >> + > >> + if (!realpath(filename, resolved_path)) { > >> + av_log(NULL, AV_LOG_FATAL, "Failed to resolve path for '%s': > %s\n", filename, strerror(errno)); > >> + return AVERROR(errno); > >> + } > >> + > > > > Hi. Thanks for the patch. Did you test it with non-filenames arguments, > > for example http://…? > > > >> + if (!strcmp(resolved_path, "-")) > >> filename = "fd:"; > > > > This should happen before resolution. > > > >> - input_filename = av_strdup(filename); > >> + input_filename = av_strdup(resolved_path); > >> if (!input_filename) > >> return AVERROR(ENOMEM); > >> > > > > On the whole, I think you are going at it wrong: you are only fixing > > this for ffplay, not for ffprobe, ffmpeg and other applications built on > > the libraries, and resolving the path can have side effects, for example > > if you do not have permission on a parent of the current working > > directory. > > > > IMO, the correct way would be to add a stat() early in the opening of > > the file and test the device number. But that requires changing quite a > > lot of things. > > Agreed. You should improve the probing function to fix the ticket, you can > do a stat in v4l2_read_probe() in libavdevice/v4l2.c, check if it is a > char device and try a V4L2 IOCTL on it to make sure it is a V4L2 device. > > Regards, > Marton > > > > > Regards, > > > > -- > > Nicolas George > > _______________________________________________ > > 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". > _______________________________________________ > 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". > _______________________________________________ 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".