From patchwork Mon Mar 28 16:14:30 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: jb X-Patchwork-Id: 35020 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c05:b0:7a:e998:b410 with SMTP id bw5csp348568pzb; Mon, 28 Mar 2022 09:14:44 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyUGkOiltc5zc99/ONWE4nVzXF3Nouvo6W6NjVHCIaUnJQUwmXBiGbvpQ8LVWjEPsvnn1SF X-Received: by 2002:aa7:cf0d:0:b0:419:362:7ebf with SMTP id a13-20020aa7cf0d000000b0041903627ebfmr17173608edy.225.1648484083739; Mon, 28 Mar 2022 09:14:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648484083; cv=none; d=google.com; s=arc-20160816; b=MLiwgm+cHfoNA8bDLZ6w5BJbp9E7oFnRaRExEzQHjP2hK95WHyjvUh5Krut6vDOhf3 oKLG0U6d8tO9B4oUDeyoDMN28g4mIuoeivxn/HF+UBh4Vbb8R7UxM2tUnznFBM0h6+JG 7mHdKBipHRj7k/pQ8EekZP92agzypYNrrf68AC43f8vz9XKk7A5UbbXZClIcDWXZme+X N+BalSdUx1a8aAseAQysXMP6PeYT1mrsfWNbqxa6RbhzS0NXRxTdWONhCLOof5+9Mvc9 5YZEPgm6aqhDinKZGOXVeWGrWVde+Kl1/Hc8IQjflcQed6VqKqCmKFZo2xIw0L3RpbBe q66w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject:from:to :content-language:user-agent:mime-version:date:message-id :dkim-signature:delivered-to; bh=yCEKcze4pjHgtzjU6yuHmC/3k6MsbRnMxFUpOhOFIyY=; b=t/K7e8O6NFJatDWeV8W0kckGmmWR8qZa9bZZ1fXg4xlpRMMYodpEVRHWyEG2j4MVvl UtHwXxxGTN3s8Ts80nLGBQyhVlULeLTiYEmuA4kBbjMm4VnwrJpDYdAJubO1kg+JMh44 1kr5yu0stiwgfO9TBcU3m7l5RVYGqNBmAYvrDQVVMYxuZdtrUl/GcoXKnLfdmz1VzP1S GDTrkw/SwOobE0CcejMEkUqyFWz/YCV0K9zK6jBO+4KPtD8J08dEDntphRP9TUwFaSdO EHYK/vsXv5YAmJo1DLh3UM+Akx4PE0cz8cvBJwtJSilnikwzgCg7mEZyHJpIt8cWHQ8a e0HA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b="M20/4iXI"; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id ju20-20020a170906e91400b006e0da544495si10120085ejb.632.2022.03.28.09.14.43; Mon, 28 Mar 2022 09:14:43 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b="M20/4iXI"; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0AB3F68B247; Mon, 28 Mar 2022 19:14:41 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ed1-f42.google.com (mail-ed1-f42.google.com [209.85.208.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 40D6D68AE59 for ; Mon, 28 Mar 2022 19:14:34 +0300 (EEST) Received: by mail-ed1-f42.google.com with SMTP id b15so17532026edn.4 for ; Mon, 28 Mar 2022 09:14:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=message-id:date:mime-version:user-agent:content-language:to:from :subject; bh=qq02p4s6Gzml0p+nTIp1Jg5sBqyw+1iIGdB+ez2jTpQ=; b=M20/4iXI9ZSheH5sxLSiDc95zG9DxGGxiu4O29DGohkteKKVNR0v/nYRcgs5O+Jz/F U5u5N/a9ycoj8vLWz4FZuQzv1Rsf2opv6QQOn4mo3XeU7VQeKl8m6HoF1tUOo4+DgPPC vM/iu5ntmPeHkr6O8DUL7ja3EX0TCxLtVtxTv3Z/+EtgVjDx3i4Yw2Po+0GWZXAkSQUs kdqqQLid9b68hZPdweUA17z/CuVYGPm0OwXwT1yc7wYybOENAe27xDU0G/R2Bet6z8OH 28pW82End0u6rgE9tNOD8Mtt7PC8mGVrv2b21qNwZCOEoXeRzYSTfoKJjQlbx77kwmMv VBFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent :content-language:to:from:subject; bh=qq02p4s6Gzml0p+nTIp1Jg5sBqyw+1iIGdB+ez2jTpQ=; b=ynqyA1ITUH+3aGTH0moi+Noz6bRScYBOujuH0yTRU6boh3oPFVXc/f7x1suh+QSORt cfkg7xBJ0m30zt6qshfZxmSS2MlHy1aEWQy4uzmMX6cIcw+SFHagofXkfTyHdAbz9XV+ GrBhZcLk1P4jwUO8o5qs2Pjk4EI6Rri/gLd5I4qXwhZ6hpe/TN1GTg3ywWhOe4MmfkZK uuc3Dwa3jSDNYPiO+WMvxW1dI8os5/MFC99F4uCX0+v88YmT0j/aoog5ei/qFyVslOig IsUxbKCvonFRvfRBueSC5azdtNBde/huoEJmRKLT46Pt7ui4yCtkIgCw2fme+T9LUpWb cZrQ== X-Gm-Message-State: AOAM53314+kMHJ9UCA80u07flGF3VeG7bSIKBCY7hEMDIJkoISw5gQL7 jgQxjwWKSc+t1YQsJq4/Gy8TZ+bfgV8= X-Received: by 2002:aa7:cad3:0:b0:410:b188:a49a with SMTP id l19-20020aa7cad3000000b00410b188a49amr17136396edt.416.1648484071999; Mon, 28 Mar 2022 09:14:31 -0700 (PDT) Received: from [10.10.0.40] (p509896f1.dip0.t-ipconnect.de. [80.152.150.241]) by smtp.gmail.com with ESMTPSA id hr13-20020a1709073f8d00b006dfcc331a42sm5967938ejc.203.2022.03.28.09.14.31 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 28 Mar 2022 09:14:31 -0700 (PDT) Message-ID: <3a73af48-1c9e-f475-d5b4-ada6db53b13c@gmail.com> Date: Mon, 28 Mar 2022 18:14:30 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.7.0 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org From: jb Subject: [FFmpeg-devel] [PATCH] libavformat/rtmp: Adding a flag to give user the option to have ffmpeg fail instead of warn when mismatches are found in rtmp url stream or application names. X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: aGOyIQkkN3/L Hello, this patch was originally from William Martin, I just adapt it to the newest ffmpeg version. Regards Jonathan From 89b441ce47614035a545da1a7ce46c53ccf165e5 Mon Sep 17 00:00:00 2001 From: jb-alvarado Date: Mon, 28 Mar 2022 17:07:57 +0200 Subject: [PATCH] Adding a flag to give user the option to have ffmpeg fail instead of warn when mismatches are found in rtmp url stream or application names. from original: https://patchwork.ffmpeg.org/project/ffmpeg/patch/20190925185708.70924-1-unique.will.martin@gmail.com/ --- libavformat/librtmp.c | 2 ++ libavformat/rtmpproto.c | 28 ++++++++++++++++++++++------ 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/libavformat/librtmp.c b/libavformat/librtmp.c index 43013e4..00b4966 100644 --- a/libavformat/librtmp.c +++ b/libavformat/librtmp.c @@ -52,6 +52,7 @@ typedef struct LibRTMPContext { int live; char *temp_filename; int buffer_size; + bool strict_paths; } LibRTMPContext; static void rtmp_log(int level, const char *fmt, va_list args) @@ -333,6 +334,7 @@ static const AVOption options[] = { {"rtmp_swfurl", "URL of the SWF player. By default no value will be sent", OFFSET(swfurl), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, DEC|ENC}, {"rtmp_swfverify", "URL to player swf file, compute hash/size automatically. (unimplemented)", OFFSET(swfverify), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, DEC}, {"rtmp_tcurl", "URL of the target stream. Defaults to proto://host[:port]/app.", OFFSET(tcurl), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, DEC|ENC}, + {"rtmp_strict_paths", "Error instead of warn for mismatch on stream or application path in url", OFFSET(strict_paths), AV_OPT_TYPE_BOOL, {.i64 = 0 }, 0, 1, DEC}, #if CONFIG_NETWORK {"rtmp_buffer_size", "set buffer size in bytes", OFFSET(buffer_size), AV_OPT_TYPE_INT, {.i64 = -1}, -1, INT_MAX, DEC|ENC }, #endif diff --git a/libavformat/rtmpproto.c b/libavformat/rtmpproto.c index f97e3c3..34433ed 100644 --- a/libavformat/rtmpproto.c +++ b/libavformat/rtmpproto.c @@ -132,6 +132,7 @@ typedef struct RTMPContext { char auth_params[500]; int do_reconnect; int auth_tried; + int strict_paths; ///< If true, enforce strict string matching on rtmp stream and application } RTMPContext; #define PLAYER_KEY_OPEN_PART_LEN 30 ///< length of partial key used for first client digest signing @@ -480,9 +481,16 @@ static int read_connect(URLContext *s, RTMPContext *rt) "app", tmpstr, sizeof(tmpstr)); if (ret) av_log(s, AV_LOG_WARNING, "App field not found in connect\n"); - if (!ret && strcmp(tmpstr, rt->app)) - av_log(s, AV_LOG_WARNING, "App field don't match up: %s <-> %s\n", - tmpstr, rt->app); + if (!ret && strcmp(tmpstr, rt->app)) { + if (rt->strict_paths) { + av_log(s, AV_LOG_ERROR, "App field don't match up: %s <-> %s. " + "Exiting since rtmp_strict_paths provided\n", tmpstr, rt->app); + return AVERROR(EIO); + } else { + av_log(s, AV_LOG_WARNING, "App field don't match up: %s <-> %s\n", + tmpstr, rt->app); + } + } ff_rtmp_packet_destroy(&pkt); // Send Window Acknowledgement Size (as defined in specification) @@ -1947,9 +1955,16 @@ static int send_invoke_response(URLContext *s, RTMPPacket *pkt) pchar = s->filename; } pchar++; - if (strcmp(pchar, filename)) - av_log(s, AV_LOG_WARNING, "Unexpected stream %s, expecting" - " %s\n", filename, pchar); + if (strcmp(pchar, filename)) { + if (rt->strict_paths) { + av_log(s, AV_LOG_ERROR, "Unexpected stream %s, expecting %s. " + "Exiting since rtmp_strict_paths provided.\n", filename, pchar); + return AVERROR(EIO); + } else { + av_log(s, AV_LOG_WARNING, "Unexpected stream %s, expecting" + " %s\n", filename, pchar); + } + } } rt->state = STATE_RECEIVING; } @@ -3119,6 +3134,7 @@ static const AVOption rtmp_options[] = { {"listen", "Listen for incoming rtmp connections", OFFSET(listen), AV_OPT_TYPE_INT, {.i64 = 0}, INT_MIN, INT_MAX, DEC, "rtmp_listen" }, {"tcp_nodelay", "Use TCP_NODELAY to disable Nagle's algorithm", OFFSET(tcp_nodelay), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1, DEC|ENC}, {"timeout", "Maximum timeout (in seconds) to wait for incoming connections. -1 is infinite. Implies -rtmp_listen 1", OFFSET(listen_timeout), AV_OPT_TYPE_INT, {.i64 = -1}, INT_MIN, INT_MAX, DEC, "rtmp_listen" }, + {"rtmp_strict_paths", "Error instead of warn for mismatch on stream or application path in url", OFFSET(strict_paths), AV_OPT_TYPE_BOOL, {.i64 = 0 }, 0, 1, DEC}, { NULL }, }; -- 2.35.1