Message ID | tencent_1BAC68C600A16ACE7C46AC6239A9C299B50A@qq.com |
---|---|
State | Accepted |
Commit | 9daac85da8ad94fde05ae6ec70555ef29a68605c |
Headers | show |
Series | [FFmpeg-devel,1/2] lavf/udp: set ttl upper bound to 255 | expand |
Context | Check | Description |
---|---|---|
andriy/make_x86 | success | Make finished |
andriy/make_fate_x86 | success | Make fate finished |
andriy/make_ppc | success | Make finished |
andriy/make_fate_ppc | success | Make fate finished |
andriy/make_aarch64_jetson | success | Make finished |
andriy/make_fate_aarch64_jetson | success | Make fate finished |
> On Jan 27, 2022, at 12:22 AM, Zhao Zhili <quinkblack@foxmail.com> wrote: > > --- > libavformat/udp.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/libavformat/udp.c b/libavformat/udp.c > index 83c042d079..b441d2ea0d 100644 > --- a/libavformat/udp.c > +++ b/libavformat/udp.c > @@ -134,7 +134,7 @@ static const AVOption options[] = { > { "reuse", "explicitly allow reusing UDP sockets", OFFSET(reuse_socket), AV_OPT_TYPE_BOOL, { .i64 = -1 }, -1, 1, D|E }, > { "reuse_socket", "explicitly allow reusing UDP sockets", OFFSET(reuse_socket), AV_OPT_TYPE_BOOL, { .i64 = -1 }, -1, 1, .flags = D|E }, > { "broadcast", "explicitly allow or disallow broadcast destination", OFFSET(is_broadcast), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, E }, > - { "ttl", "Time to live (multicast only)", OFFSET(ttl), AV_OPT_TYPE_INT, { .i64 = 16 }, 0, INT_MAX, E }, > + { "ttl", "Time to live (multicast only)", OFFSET(ttl), AV_OPT_TYPE_INT, { .i64 = 16 }, 0, 255, E }, > { "connect", "set if connect() should be called on socket", OFFSET(is_connected), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, .flags = D|E }, > { "fifo_size", "set the UDP receiving circular buffer size, expressed as a number of packets with size of 188 bytes", OFFSET(circular_buffer_size), AV_OPT_TYPE_INT, {.i64 = 7*4096}, 0, INT_MAX, D }, > { "overrun_nonfatal", "survive in case of UDP receiving circular buffer overrun", OFFSET(overrun_nonfatal), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, D }, > -- > 2.29.2 > This patchset is related to 'Fix setsockopt IP_MULTICAST_TTL on OpenBSD’. https://patchwork.ffmpeg.org/project/ffmpeg/patch/Yd5jaXBCd6GP7kBh@humpty.home.comstyle.com/ Looks like it’s impossible to avoid casting int to unsigned char, so integer overflow/truncation must be handled. Since the maximum value of TTL is 255 limited by IPv4/IPv6, set the upper bound of AVOption to fail early for invalid value.
On Thu, Jan 27, 2022 at 1:09 PM "zhilizhao(赵志立)" <quinkblack@foxmail.com> wrote: > > > > > On Jan 27, 2022, at 12:22 AM, Zhao Zhili <quinkblack@foxmail.com> wrote: > > > > --- > > libavformat/udp.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/libavformat/udp.c b/libavformat/udp.c > > index 83c042d079..b441d2ea0d 100644 > > --- a/libavformat/udp.c > > +++ b/libavformat/udp.c > > @@ -134,7 +134,7 @@ static const AVOption options[] = { > > { "reuse", "explicitly allow reusing UDP sockets", OFFSET(reuse_socket), AV_OPT_TYPE_BOOL, { .i64 = -1 }, -1, 1, D|E }, > > { "reuse_socket", "explicitly allow reusing UDP sockets", OFFSET(reuse_socket), AV_OPT_TYPE_BOOL, { .i64 = -1 }, -1, 1, .flags = D|E }, > > { "broadcast", "explicitly allow or disallow broadcast destination", OFFSET(is_broadcast), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, E }, > > - { "ttl", "Time to live (multicast only)", OFFSET(ttl), AV_OPT_TYPE_INT, { .i64 = 16 }, 0, INT_MAX, E }, > > + { "ttl", "Time to live (multicast only)", OFFSET(ttl), AV_OPT_TYPE_INT, { .i64 = 16 }, 0, 255, E }, > > { "connect", "set if connect() should be called on socket", OFFSET(is_connected), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, .flags = D|E }, > > { "fifo_size", "set the UDP receiving circular buffer size, expressed as a number of packets with size of 188 bytes", OFFSET(circular_buffer_size), AV_OPT_TYPE_INT, {.i64 = 7*4096}, 0, INT_MAX, D }, > > { "overrun_nonfatal", "survive in case of UDP receiving circular buffer overrun", OFFSET(overrun_nonfatal), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, D }, > > -- > > 2.29.2 > > > > This patchset is related to 'Fix setsockopt IP_MULTICAST_TTL on OpenBSD’. > > https://patchwork.ffmpeg.org/project/ffmpeg/patch/Yd5jaXBCd6GP7kBh@humpty.home.comstyle.com/ > > Looks like it’s impossible to avoid casting int to unsigned char, so integer > overflow/truncation must be handled. Since the maximum value of TTL is 255 > limited by IPv4/IPv6, set the upper bound of AVOption to fail early for > invalid value. Patchset LGTM, limited the TTL(Time to live) in IPv4 <= 255 in option is better than coding in the function
On Thu, 27 Jan 2022, mypopy@gmail.com wrote: > On Thu, Jan 27, 2022 at 1:09 PM "zhilizhao(赵志立)" <quinkblack@foxmail.com> wrote: >> >> >> >> > On Jan 27, 2022, at 12:22 AM, Zhao Zhili <quinkblack@foxmail.com> wrote: >> > >> > --- >> > libavformat/udp.c | 2 +- >> > 1 file changed, 1 insertion(+), 1 deletion(-) >> > >> > diff --git a/libavformat/udp.c b/libavformat/udp.c >> > index 83c042d079..b441d2ea0d 100644 >> > --- a/libavformat/udp.c >> > +++ b/libavformat/udp.c >> > @@ -134,7 +134,7 @@ static const AVOption options[] = { >> > { "reuse", "explicitly allow reusing UDP sockets", OFFSET(reuse_socket), AV_OPT_TYPE_BOOL, { .i64 = -1 }, -1, 1, D|E }, >> > { "reuse_socket", "explicitly allow reusing UDP sockets", OFFSET(reuse_socket), AV_OPT_TYPE_BOOL, { .i64 = -1 }, -1, 1, .flags = D|E }, >> > { "broadcast", "explicitly allow or disallow broadcast destination", OFFSET(is_broadcast), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, E }, >> > - { "ttl", "Time to live (multicast only)", OFFSET(ttl), AV_OPT_TYPE_INT, { .i64 = 16 }, 0, INT_MAX, E }, >> > + { "ttl", "Time to live (multicast only)", OFFSET(ttl), AV_OPT_TYPE_INT, { .i64 = 16 }, 0, 255, E }, >> > { "connect", "set if connect() should be called on socket", OFFSET(is_connected), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, .flags = D|E }, >> > { "fifo_size", "set the UDP receiving circular buffer size, expressed as a number of packets with size of 188 bytes", OFFSET(circular_buffer_size), AV_OPT_TYPE_INT, {.i64 = 7*4096}, 0, INT_MAX, D }, >> > { "overrun_nonfatal", "survive in case of UDP receiving circular buffer overrun", OFFSET(overrun_nonfatal), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, D }, >> > -- >> > 2.29.2 >> > >> >> This patchset is related to 'Fix setsockopt IP_MULTICAST_TTL on OpenBSD’. >> >> https://patchwork.ffmpeg.org/project/ffmpeg/patch/Yd5jaXBCd6GP7kBh@humpty.home.comstyle.com/ >> >> Looks like it’s impossible to avoid casting int to unsigned char, so integer >> overflow/truncation must be handled. Since the maximum value of TTL is 255 >> limited by IPv4/IPv6, set the upper bound of AVOption to fail early for >> invalid value. > Patchset LGTM, limited the TTL(Time to live) in IPv4 <= 255 in option > is better than coding in the function Will apply. Thanks, Marton
diff --git a/libavformat/udp.c b/libavformat/udp.c index 83c042d079..b441d2ea0d 100644 --- a/libavformat/udp.c +++ b/libavformat/udp.c @@ -134,7 +134,7 @@ static const AVOption options[] = { { "reuse", "explicitly allow reusing UDP sockets", OFFSET(reuse_socket), AV_OPT_TYPE_BOOL, { .i64 = -1 }, -1, 1, D|E }, { "reuse_socket", "explicitly allow reusing UDP sockets", OFFSET(reuse_socket), AV_OPT_TYPE_BOOL, { .i64 = -1 }, -1, 1, .flags = D|E }, { "broadcast", "explicitly allow or disallow broadcast destination", OFFSET(is_broadcast), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, E }, - { "ttl", "Time to live (multicast only)", OFFSET(ttl), AV_OPT_TYPE_INT, { .i64 = 16 }, 0, INT_MAX, E }, + { "ttl", "Time to live (multicast only)", OFFSET(ttl), AV_OPT_TYPE_INT, { .i64 = 16 }, 0, 255, E }, { "connect", "set if connect() should be called on socket", OFFSET(is_connected), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, .flags = D|E }, { "fifo_size", "set the UDP receiving circular buffer size, expressed as a number of packets with size of 188 bytes", OFFSET(circular_buffer_size), AV_OPT_TYPE_INT, {.i64 = 7*4096}, 0, INT_MAX, D }, { "overrun_nonfatal", "survive in case of UDP receiving circular buffer overrun", OFFSET(overrun_nonfatal), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, D },