> On Jan 27, 2022, at 12:22 AM, Zhao Zhili <quinkbl...@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/yd5jaxbcd6gp7...@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.