* [FFmpeg-devel] [PATCH] avformat/file: add fd protocol
@ 2022-11-18 18:48 Zhao Zhili
2022-12-05 2:51 ` "zhilizhao(赵志立)"
2022-12-09 14:31 ` Anton Khirnov
0 siblings, 2 replies; 11+ messages in thread
From: Zhao Zhili @ 2022-11-18 18:48 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Zhao Zhili
From: Zhao Zhili <zhilizhao@tencent.com>
Unlike the pipe protocol, fd protocol has seek support if it
corresponding to a regular file.
---
Sometimes it's the only way to access files via file descriptor, e.g.,
requesting a shared file on Android:
https://developer.android.com/training/secure-file-sharing/request-file
doc/protocols.texi | 24 +++++++++++++++++++
libavformat/Makefile | 1 +
libavformat/file.c | 51 +++++++++++++++++++++++++++++++++++++++++
libavformat/protocols.c | 1 +
libavformat/version.h | 4 ++--
5 files changed, 79 insertions(+), 2 deletions(-)
diff --git a/doc/protocols.texi b/doc/protocols.texi
index 5e9198e67c..d9f2d2dec3 100644
--- a/doc/protocols.texi
+++ b/doc/protocols.texi
@@ -275,6 +275,30 @@ For example, to convert a GIF file given inline with @command{ffmpeg}:
ffmpeg -i "data:image/gif;base64,R0lGODdhCAAIAMIEAAAAAAAA//8AAP//AP///////////////ywAAAAACAAIAAADF0gEDLojDgdGiJdJqUX02iB4E8Q9jUMkADs=" smiley.png
@end example
+@section fd
+
+File descriptor access protocol.
+
+The accepted syntax is:
+@example
+fd:[@var{number}]
+@end example
+
+@var{number} is the number corresponding to a file descriptor. Unlike the pipe
+protocol, fd protocol has seek support if it corresponding to a regular file.
+If @var{number} is not specified, by default the stdout file descriptor will
+be used for writing, stdin for reading.
+
+This protocol accepts the following options:
+
+@table @option
+@item blocksize
+Set I/O operation maximum block size, in bytes. Default value is
+@code{INT_MAX}, which results in not limiting the requested block size.
+Setting this value reasonably low improves user termination request reaction
+time, which is valuable if data transmission is slow.
+@end table
+
@section file
File access protocol.
diff --git a/libavformat/Makefile b/libavformat/Makefile
index d7f198bf39..1452216e29 100644
--- a/libavformat/Makefile
+++ b/libavformat/Makefile
@@ -647,6 +647,7 @@ OBJS-$(CONFIG_DATA_PROTOCOL) += data_uri.o
OBJS-$(CONFIG_FFRTMPCRYPT_PROTOCOL) += rtmpcrypt.o rtmpdigest.o rtmpdh.o
OBJS-$(CONFIG_FFRTMPHTTP_PROTOCOL) += rtmphttp.o
OBJS-$(CONFIG_FILE_PROTOCOL) += file.o
+OBJS-$(CONFIG_FD_PROTOCOL) += file.o
OBJS-$(CONFIG_FTP_PROTOCOL) += ftp.o urldecode.o
OBJS-$(CONFIG_GOPHER_PROTOCOL) += gopher.o
OBJS-$(CONFIG_GOPHERS_PROTOCOL) += gopher.o
diff --git a/libavformat/file.c b/libavformat/file.c
index 6103c37b34..765ad21d67 100644
--- a/libavformat/file.c
+++ b/libavformat/file.c
@@ -109,6 +109,13 @@ static const AVClass pipe_class = {
.version = LIBAVUTIL_VERSION_INT,
};
+static const AVClass fd_class = {
+ .class_name = "fd",
+ .item_name = av_default_item_name,
+ .option = pipe_options,
+ .version = LIBAVUTIL_VERSION_INT,
+};
+
static int file_read(URLContext *h, unsigned char *buf, int size)
{
FileContext *c = h->priv_data;
@@ -412,3 +419,47 @@ const URLProtocol ff_pipe_protocol = {
};
#endif /* CONFIG_PIPE_PROTOCOL */
+
+#if CONFIG_FD_PROTOCOL
+
+static int fd_open(URLContext *h, const char *filename, int flags)
+{
+ FileContext *c = h->priv_data;
+ int fd;
+ char *final;
+ struct stat st;
+
+ av_strstart(filename, "fd:", &filename);
+
+ fd = strtol(filename, &final, 10);
+ if((filename == final) || *final ) {/* No digits found, or something like 10ab */
+ if (flags & AVIO_FLAG_WRITE) {
+ fd = 1;
+ } else {
+ fd = 0;
+ }
+ }
+#if HAVE_SETMODE
+ setmode(fd, O_BINARY);
+#endif
+ if (fstat(fd, &st) < 0)
+ return AVERROR(errno);
+ h->is_streamed = !(S_ISREG(st.st_mode) || S_ISBLK(st.st_mode));
+ c->fd = fd;
+ return 0;
+}
+
+const URLProtocol ff_fd_protocol = {
+ .name = "fd",
+ .url_open = fd_open,
+ .url_read = file_read,
+ .url_write = file_write,
+ .url_seek = file_seek,
+ .url_get_file_handle = file_get_handle,
+ .url_check = file_check,
+ .priv_data_size = sizeof(FileContext),
+ .priv_data_class = &fd_class,
+ .default_whitelist = "crypto,data"
+};
+
+#endif /* CONFIG_FD_PROTOCOL */
diff --git a/libavformat/protocols.c b/libavformat/protocols.c
index 8b7d1b940f..82cb1033e4 100644
--- a/libavformat/protocols.c
+++ b/libavformat/protocols.c
@@ -29,6 +29,7 @@ extern const URLProtocol ff_concat_protocol;
extern const URLProtocol ff_concatf_protocol;
extern const URLProtocol ff_crypto_protocol;
extern const URLProtocol ff_data_protocol;
+extern const URLProtocol ff_fd_protocol;
extern const URLProtocol ff_ffrtmpcrypt_protocol;
extern const URLProtocol ff_ffrtmphttp_protocol;
extern const URLProtocol ff_file_protocol;
diff --git a/libavformat/version.h b/libavformat/version.h
index 7c9d50b7b3..f5a7f579b3 100644
--- a/libavformat/version.h
+++ b/libavformat/version.h
@@ -31,8 +31,8 @@
#include "version_major.h"
-#define LIBAVFORMAT_VERSION_MINOR 34
-#define LIBAVFORMAT_VERSION_MICRO 101
+#define LIBAVFORMAT_VERSION_MINOR 35
+#define LIBAVFORMAT_VERSION_MICRO 100
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
LIBAVFORMAT_VERSION_MINOR, \
--
2.25.1
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avformat/file: add fd protocol
2022-11-18 18:48 [FFmpeg-devel] [PATCH] avformat/file: add fd protocol Zhao Zhili
@ 2022-12-05 2:51 ` "zhilizhao(赵志立)"
2022-12-08 15:11 ` Zhao Zhili
2022-12-12 16:31 ` Rémi Denis-Courmont
2022-12-09 14:31 ` Anton Khirnov
1 sibling, 2 replies; 11+ messages in thread
From: "zhilizhao(赵志立)" @ 2022-12-05 2:51 UTC (permalink / raw)
To: FFmpeg development discussions and patches
> On Nov 19, 2022, at 02:48, Zhao Zhili <quinkblack@foxmail.com> wrote:
>
> From: Zhao Zhili <zhilizhao@tencent.com>
>
> Unlike the pipe protocol, fd protocol has seek support if it
> corresponding to a regular file.
> ---
> Sometimes it's the only way to access files via file descriptor, e.g.,
> requesting a shared file on Android:
> https://developer.android.com/training/secure-file-sharing/request-file
>
> doc/protocols.texi | 24 +++++++++++++++++++
> libavformat/Makefile | 1 +
> libavformat/file.c | 51 +++++++++++++++++++++++++++++++++++++++++
> libavformat/protocols.c | 1 +
> libavformat/version.h | 4 ++--
> 5 files changed, 79 insertions(+), 2 deletions(-)
>
>
Ping for review.
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avformat/file: add fd protocol
2022-12-05 2:51 ` "zhilizhao(赵志立)"
@ 2022-12-08 15:11 ` Zhao Zhili
2022-12-08 15:16 ` Marvin Scholz
2022-12-12 16:31 ` Rémi Denis-Courmont
1 sibling, 1 reply; 11+ messages in thread
From: Zhao Zhili @ 2022-12-08 15:11 UTC (permalink / raw)
To: FFmpeg development discussions and patches
On Mon, 2022-12-05 at 10:51 +0800, zhilizhao(赵志立) wrote:
> > On Nov 19, 2022, at 02:48, Zhao Zhili <quinkblack@foxmail.com>
> > wrote:
> >
> > From: Zhao Zhili <zhilizhao@tencent.com>
> >
> > Unlike the pipe protocol, fd protocol has seek support if it
> > corresponding to a regular file.
> > ---
> > Sometimes it's the only way to access files via file descriptor,
> > e.g.,
> > requesting a shared file on Android:
> > https://developer.android.com/training/secure-file-sharing/request-file
> >
> > doc/protocols.texi | 24 +++++++++++++++++++
> > libavformat/Makefile | 1 +
> > libavformat/file.c | 51
> > +++++++++++++++++++++++++++++++++++++++++
> > libavformat/protocols.c | 1 +
> > libavformat/version.h | 4 ++--
> > 5 files changed, 79 insertions(+), 2 deletions(-)
> >
> >
>
> Ping for review.
>
Will apply tomorrow unless there are objections.
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avformat/file: add fd protocol
2022-12-08 15:11 ` Zhao Zhili
@ 2022-12-08 15:16 ` Marvin Scholz
2022-12-08 15:28 ` Andreas Rheinhardt
0 siblings, 1 reply; 11+ messages in thread
From: Marvin Scholz @ 2022-12-08 15:16 UTC (permalink / raw)
To: FFmpeg development discussions and patches
On 8 Dec 2022, at 16:11, Zhao Zhili wrote:
> On Mon, 2022-12-05 at 10:51 +0800, zhilizhao(赵志立) wrote:
>>> On Nov 19, 2022, at 02:48, Zhao Zhili <quinkblack@foxmail.com>
>>> wrote:
>>>
>>> From: Zhao Zhili <zhilizhao@tencent.com>
>>>
>>> Unlike the pipe protocol, fd protocol has seek support if it
>>> corresponding to a regular file.
>>> ---
>>> Sometimes it's the only way to access files via file descriptor,
>>> e.g.,
>>> requesting a shared file on Android:
>>> https://developer.android.com/training/secure-file-sharing/request-file
>>>
>>> doc/protocols.texi | 24 +++++++++++++++++++
>>> libavformat/Makefile | 1 +
>>> libavformat/file.c | 51
>>> +++++++++++++++++++++++++++++++++++++++++
>>> libavformat/protocols.c | 1 +
>>> libavformat/version.h | 4 ++--
>>> 5 files changed, 79 insertions(+), 2 deletions(-)
>>>
>>>
>>
>> Ping for review.
>>
>
> Will apply tomorrow unless there are objections.
>
Maybe I overlooked something but where does the CONFIG_FD_PROTOCOL
define comes from?
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@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-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avformat/file: add fd protocol
2022-12-08 15:16 ` Marvin Scholz
@ 2022-12-08 15:28 ` Andreas Rheinhardt
2022-12-08 16:16 ` Zhao Zhili
0 siblings, 1 reply; 11+ messages in thread
From: Andreas Rheinhardt @ 2022-12-08 15:28 UTC (permalink / raw)
To: ffmpeg-devel
Marvin Scholz:
>
>
> On 8 Dec 2022, at 16:11, Zhao Zhili wrote:
>
>> On Mon, 2022-12-05 at 10:51 +0800, zhilizhao(赵志立) wrote:
>>>> On Nov 19, 2022, at 02:48, Zhao Zhili <quinkblack@foxmail.com>
>>>> wrote:
>>>>
>>>> From: Zhao Zhili <zhilizhao@tencent.com>
>>>>
>>>> Unlike the pipe protocol, fd protocol has seek support if it
>>>> corresponding to a regular file.
>>>> ---
>>>> Sometimes it's the only way to access files via file descriptor,
>>>> e.g.,
>>>> requesting a shared file on Android:
>>>> https://developer.android.com/training/secure-file-sharing/request-file
>>>>
>>>> doc/protocols.texi | 24 +++++++++++++++++++
>>>> libavformat/Makefile | 1 +
>>>> libavformat/file.c | 51
>>>> +++++++++++++++++++++++++++++++++++++++++
>>>> libavformat/protocols.c | 1 +
>>>> libavformat/version.h | 4 ++--
>>>> 5 files changed, 79 insertions(+), 2 deletions(-)
>>>>
>>>>
>>>
>>> Ping for review.
>>>
>>
>> Will apply tomorrow unless there are objections.
>>
>
> Maybe I overlooked something but where does the CONFIG_FD_PROTOCOL
> define comes from?
>
It is autogenerated by configure due to the entry in lavf/protocols.c
(and this change will trigger a request to rerun configure when compiling).
(I haven't looked at the patch at all.)
- 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-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avformat/file: add fd protocol
2022-12-08 15:28 ` Andreas Rheinhardt
@ 2022-12-08 16:16 ` Zhao Zhili
0 siblings, 0 replies; 11+ messages in thread
From: Zhao Zhili @ 2022-12-08 16:16 UTC (permalink / raw)
To: ffmpeg-devel
On Thu, 2022-12-08 at 16:28 +0100, Andreas Rheinhardt wrote:
> Marvin Scholz:
> >
> > On 8 Dec 2022, at 16:11, Zhao Zhili wrote:
> >
> > > On Mon, 2022-12-05 at 10:51 +0800, zhilizhao(赵志立) wrote:
> > > > > On Nov 19, 2022, at 02:48, Zhao Zhili <quinkblack@foxmail.com
> > > > > >
> > > > > wrote:
> > > > >
> > > > > From: Zhao Zhili <zhilizhao@tencent.com>
> > > > >
> > > > > Unlike the pipe protocol, fd protocol has seek support if it
> > > > > corresponding to a regular file.
> > > > > ---
> > > > > Sometimes it's the only way to access files via file
> > > > > descriptor,
> > > > > e.g.,
> > > > > requesting a shared file on Android:
> > > > > https://developer.android.com/training/secure-file-sharing/request-file
> > > > >
> > > > > doc/protocols.texi | 24 +++++++++++++++++++
> > > > > libavformat/Makefile | 1 +
> > > > > libavformat/file.c | 51
> > > > > +++++++++++++++++++++++++++++++++++++++++
> > > > > libavformat/protocols.c | 1 +
> > > > > libavformat/version.h | 4 ++--
> > > > > 5 files changed, 79 insertions(+), 2 deletions(-)
> > > > >
> > > > >
> > > >
> > > > Ping for review.
> > > >
> > >
> > > Will apply tomorrow unless there are objections.
> > >
> >
> > Maybe I overlooked something but where does the CONFIG_FD_PROTOCOL
> > define comes from?
> >
>
> It is autogenerated by configure due to the entry in lavf/protocols.c
> (and this change will trigger a request to rerun configure when
> compiling).
> (I haven't looked at the patch at all.)
>
> - Andreas
Yes, it was automatically generated by configure and included in
config_components.
For the patch itself, make pipe protocol is easy, but it doesn't sound
right (a seekable pipe). So I chose to add a new one, which is
supported by VLC too (URl is little different).
A quick test case for this patch is:
$ ./ffplay fd:0 < ~/video/cctv.mp4
You can seek back and forth.
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avformat/file: add fd protocol
2022-12-05 2:51 ` "zhilizhao(赵志立)"
2022-12-08 15:11 ` Zhao Zhili
@ 2022-12-12 16:31 ` Rémi Denis-Courmont
2022-12-12 17:23 ` Zhao Zhili
1 sibling, 1 reply; 11+ messages in thread
From: Rémi Denis-Courmont @ 2022-12-12 16:31 UTC (permalink / raw)
To: FFmpeg development discussions and patches
Le maanantaina 5. joulukuuta 2022, 4.51.34 EET zhilizhao(赵志立) a écrit :
> > On Nov 19, 2022, at 02:48, Zhao Zhili <quinkblack@foxmail.com> wrote:
> >
> > From: Zhao Zhili <zhilizhao@tencent.com>
> >
> > Unlike the pipe protocol, fd protocol has seek support if it
> > corresponding to a regular file.
> > ---
> > Sometimes it's the only way to access files via file descriptor, e.g.,
> > requesting a shared file on Android:
> > https://developer.android.com/training/secure-file-sharing/request-file
> >
> > doc/protocols.texi | 24 +++++++++++++++++++
> > libavformat/Makefile | 1 +
> > libavformat/file.c | 51 +++++++++++++++++++++++++++++++++++++++++
> > libavformat/protocols.c | 1 +
> > libavformat/version.h | 4 ++--
> > 5 files changed, 79 insertions(+), 2 deletions(-)
>
> Ping for review.
VLC does this (with a slightly different syntax, i.e. fd://$NUM) and in
hindsight, I think that it was a big mistake.
It should not be possible to refer to an opaque handle from within the URL.
This leads to all sorts of mischief, bordering on security issue, in the
common case that the URL string is untrusted.
To support this use case, IMO, the file descriptor should be passed explicitly
via a trusted channel, *not* the URL.
--
Реми Дёни-Курмон
http://www.remlab.net/
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avformat/file: add fd protocol
2022-12-12 16:31 ` Rémi Denis-Courmont
@ 2022-12-12 17:23 ` Zhao Zhili
2022-12-13 16:27 ` Rémi Denis-Courmont
0 siblings, 1 reply; 11+ messages in thread
From: Zhao Zhili @ 2022-12-12 17:23 UTC (permalink / raw)
To: FFmpeg development discussions and patches; +Cc: Rémi Denis-Courmont
On Mon, 2022-12-12 at 18:31 +0200, Rémi Denis-Courmont wrote:
> Le maanantaina 5. joulukuuta 2022, 4.51.34 EET zhilizhao(赵志立) a écrit
> :
> > > On Nov 19, 2022, at 02:48, Zhao Zhili <quinkblack@foxmail.com>
> > > wrote:
> > >
> > > From: Zhao Zhili <zhilizhao@tencent.com>
> > >
> > > Unlike the pipe protocol, fd protocol has seek support if it
> > > corresponding to a regular file.
> > > ---
> > > Sometimes it's the only way to access files via file descriptor,
> > > e.g.,
> > > requesting a shared file on Android:
> > > https://developer.android.com/training/secure-file-sharing/request-file
> > >
> > > doc/protocols.texi | 24 +++++++++++++++++++
> > > libavformat/Makefile | 1 +
> > > libavformat/file.c | 51
> > > +++++++++++++++++++++++++++++++++++++++++
> > > libavformat/protocols.c | 1 +
> > > libavformat/version.h | 4 ++--
> > > 5 files changed, 79 insertions(+), 2 deletions(-)
> >
> > Ping for review.
>
> VLC does this (with a slightly different syntax, i.e. fd://$NUM) and
> in
> hindsight, I think that it was a big mistake.
>
> It should not be possible to refer to an opaque handle from within
> the URL.
> This leads to all sorts of mischief, bordering on security issue, in
> the
> common case that the URL string is untrusted.
Could you elaborate on the security issue?
>
> To support this use case, IMO, the file descriptor should be passed
> explicitly
> via a trusted channel, *not* the URL.
Does an explicit option works here?
static const AVOption pipe_options[] = {
{ "blocksize", "set I/O operation maximum block size",
offsetof(FileContext, blocksize), AV_OPT_TYPE_INT, { .i64 = INT_MAX },
1, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM },
+ { "fd", "set file descriptor", offsetof(FileContext, fd),
AV_OPT_TYPE_INT, { .i64 = -1 }, -1, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM
},
{ NULL }
};
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avformat/file: add fd protocol
2022-12-12 17:23 ` Zhao Zhili
@ 2022-12-13 16:27 ` Rémi Denis-Courmont
0 siblings, 0 replies; 11+ messages in thread
From: Rémi Denis-Courmont @ 2022-12-13 16:27 UTC (permalink / raw)
To: FFmpeg development discussions and patches
Le maanantaina 12. joulukuuta 2022, 19.23.52 EET Zhao Zhili a écrit :
> On Mon, 2022-12-12 at 18:31 +0200, Rémi Denis-Courmont wrote:
> > Le maanantaina 5. joulukuuta 2022, 4.51.34 EET zhilizhao(赵志立) a écrit
> >
> > > > On Nov 19, 2022, at 02:48, Zhao Zhili <quinkblack@foxmail.com>
> > > > wrote:
> > > >
> > > > From: Zhao Zhili <zhilizhao@tencent.com>
> > > >
> > > > Unlike the pipe protocol, fd protocol has seek support if it
> > > > corresponding to a regular file.
> > > > ---
> > > > Sometimes it's the only way to access files via file descriptor,
> > > > e.g.,
> > > > requesting a shared file on Android:
> > > > https://developer.android.com/training/secure-file-sharing/request-fil
> > > > e
> > > >
> > > > doc/protocols.texi | 24 +++++++++++++++++++
> > > > libavformat/Makefile | 1 +
> > > > libavformat/file.c | 51
> > > > +++++++++++++++++++++++++++++++++++++++++
> > > > libavformat/protocols.c | 1 +
> > > > libavformat/version.h | 4 ++--
> > > > 5 files changed, 79 insertions(+), 2 deletions(-)
> > >
> > > Ping for review.
> >
> > VLC does this (with a slightly different syntax, i.e. fd://$NUM) and
> > in
> > hindsight, I think that it was a big mistake.
> >
> > It should not be possible to refer to an opaque handle from within
> > the URL.
> > This leads to all sorts of mischief, bordering on security issue, in
> > the
> > common case that the URL string is untrusted.
>
> Could you elaborate on the security issue?
Just guess the FD of some critical process resource (.e.g D-Bus, X11 or
Wayland connection), , and you can easily cause a DoS. It gets potentially
worse if you can guess the FD that is used to carry sensitive data, such as
another clients connection if FFmpeg runs inside some kind of network service.
> > To support this use case, IMO, the file descriptor should be passed
> > explicitly
> > via a trusted channel, *not* the URL.
>
> Does an explicit option works here?
>
> static const AVOption pipe_options[] = {
> { "blocksize", "set I/O operation maximum block size",
> offsetof(FileContext, blocksize), AV_OPT_TYPE_INT, { .i64 = INT_MAX },
> 1, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM },
> + { "fd", "set file descriptor", offsetof(FileContext, fd),
> AV_OPT_TYPE_INT, { .i64 = -1 }, -1, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM
> },
> { NULL }
> };
That seems more reasonable, so I cannot comment on the specifics of AVOption
usage.
--
Реми Дёни-Курмон
http://www.remlab.net/
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avformat/file: add fd protocol
2022-11-18 18:48 [FFmpeg-devel] [PATCH] avformat/file: add fd protocol Zhao Zhili
2022-12-05 2:51 ` "zhilizhao(赵志立)"
@ 2022-12-09 14:31 ` Anton Khirnov
2022-12-10 13:45 ` Zhao Zhili
1 sibling, 1 reply; 11+ messages in thread
From: Anton Khirnov @ 2022-12-09 14:31 UTC (permalink / raw)
To: FFmpeg development discussions and patches; +Cc: Zhao Zhili
Quoting Zhao Zhili (2022-11-18 19:48:02)
> From: Zhao Zhili <zhilizhao@tencent.com>
>
> Unlike the pipe protocol, fd protocol has seek support if it
> corresponding to a regular file.
> ---
> Sometimes it's the only way to access files via file descriptor, e.g.,
> requesting a shared file on Android:
> https://developer.android.com/training/secure-file-sharing/request-file
>
Wouldn't dup()ing the file descriptor be safer?
--
Anton Khirnov
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avformat/file: add fd protocol
2022-12-09 14:31 ` Anton Khirnov
@ 2022-12-10 13:45 ` Zhao Zhili
0 siblings, 0 replies; 11+ messages in thread
From: Zhao Zhili @ 2022-12-10 13:45 UTC (permalink / raw)
To: 'FFmpeg development discussions and patches'
> From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of Anton Khirnov
> Sent: 2022年12月9日 22:32
> To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
> Cc: Zhao Zhili <zhilizhao@tencent.com>
> Subject: Re: [FFmpeg-devel] [PATCH] avformat/file: add fd protocol
>
> Quoting Zhao Zhili (2022-11-18 19:48:02)
> > From: Zhao Zhili <zhilizhao@tencent.com>
> >
> > Unlike the pipe protocol, fd protocol has seek support if it
> > corresponding to a regular file.
> > ---
> > Sometimes it's the only way to access files via file descriptor, e.g.,
> > requesting a shared file on Android:
> > https://developer.android.com/training/secure-file-sharing/request-file
> >
>
> Wouldn't dup()ing the file descriptor be safer?
Yes, I have thought that. The question is why pipe protocol doesn't do that.
If there is no reason, I can update the patch then improve the pipe protocol.
>
> --
> Anton Khirnov
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@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-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2022-12-13 16:28 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-18 18:48 [FFmpeg-devel] [PATCH] avformat/file: add fd protocol Zhao Zhili
2022-12-05 2:51 ` "zhilizhao(赵志立)"
2022-12-08 15:11 ` Zhao Zhili
2022-12-08 15:16 ` Marvin Scholz
2022-12-08 15:28 ` Andreas Rheinhardt
2022-12-08 16:16 ` Zhao Zhili
2022-12-12 16:31 ` Rémi Denis-Courmont
2022-12-12 17:23 ` Zhao Zhili
2022-12-13 16:27 ` Rémi Denis-Courmont
2022-12-09 14:31 ` Anton Khirnov
2022-12-10 13:45 ` Zhao Zhili
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
This inbox may be cloned and mirrored by anyone:
git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
ffmpegdev@gitmailbox.com
public-inbox-index ffmpegdev
Example config snippet for mirrors.
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git