From patchwork Wed Feb 22 00:56:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Ziemowit Laski X-Patchwork-Id: 40465 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:5494:b0:bf:7b3a:fd32 with SMTP id i20csp3178493pzk; Tue, 21 Feb 2023 16:56:39 -0800 (PST) X-Google-Smtp-Source: AK7set+JyPRrCyvYItf2+dO/VNTmCwVIcXDWADYqUH2tfM0ip+SebvndhLjd+wBV2ryvAKoIDW1j X-Received: by 2002:a05:6402:1012:b0:4ac:c12b:8ef1 with SMTP id c18-20020a056402101200b004acc12b8ef1mr7563119edu.17.1677027399206; Tue, 21 Feb 2023 16:56:39 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id b6-20020aa7df86000000b004ad06322427si7672247edy.9.2023.02.21.16.56.38; Tue, 21 Feb 2023 16:56:39 -0800 (PST) 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=@ziemas.net header.s=selector1 header.b="gTsXw2e/"; arc=fail (body hash mismatch); 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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=ziemas.net Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4C7F868BF84; Wed, 22 Feb 2023 02:56:33 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2093.outbound.protection.outlook.com [40.107.244.93]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1CA7668BEE4 for ; Wed, 22 Feb 2023 02:56:25 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=O5x01D/4rl1mbuuA7zrWMJUBiMc2X8pTNzZw135MBa20UOCFVuOJCmOJMHDxl7JucM/mS9Ef5uA3fGO0mZCNi8AzxIY5dU77fvN3yApo90FSLh1LCrh1IylNCsoDk2co2/V/CC5heAxgxgXYLWLKLnIQozMMcNOk0IQ6y6a5dboEyHCje5u5ThxX8Dnhbw2QOpJx8VvWRMZHqYJHkNHGb+zQ6LIU45uUoS8caQtiAp5vfsTYRei1KPNIkevozD59NUkesfuxVCliaKdraEEJb5nLUA/cZ/NQYGwdVCJKqHVn0fHbCTfAiRIaZi4jMUWYA0R3FbmCXaV95ohRmTjuxA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=X/Io975+Ro9B8rr0Egz2dFB9PX8gWJiYH+m6TuFD2Bk=; b=Wp6oB8blvS8xJg6qE12OQjGecXA1RUSh6OipPE6C9oibDkwxdFLh0z6Kf30gVrn4ku7fuxbuypJKakOVHoPwTv/qAPNmPc+614LsNgPDVJ+Ra88duew3Tz6szeiwm3iLaGct8ct0e2eFpYy/SDy10LyFGETU2+oGLcpCVgpGSKD+R5WX7WVI1Hxl1a+EbFTu+D/VxUncF8zJpOZ/GlH/OwO6GxnCcDg7NOSqnJn64cBHzWwtif6QjqmsiAJyw7EKDinszIWSoTITSCSL7As0xfFMiyxMiAynFsyv0DHIT0pwzzECOUkG9TQatYIIZPff8uwadRckhSNbp9ns6JLE9g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ziemas.net; dmarc=pass action=none header.from=ziemas.net; dkim=pass header.d=ziemas.net; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ziemas.net; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=X/Io975+Ro9B8rr0Egz2dFB9PX8gWJiYH+m6TuFD2Bk=; b=gTsXw2e/96Q97sHXYiKFAxJ+SImJjcSNkG1H+pcS5EMBry5o445IdRTsPDllmCqf0tnI7isxnDVBZcq1shySyMN8HqX5slsX5aPBtfSRW7g9cf6jtVwaf/RF1j9h6cIXTnBHUkoAc+s32k/CMXsm3cmy2b9ndQg7zTt58OlraZ4= Received: from BYAPR12MB3238.namprd12.prod.outlook.com (2603:10b6:a03:13b::20) by DM4PR12MB5054.namprd12.prod.outlook.com (2603:10b6:5:389::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6111.21; Wed, 22 Feb 2023 00:56:21 +0000 Received: from BYAPR12MB3238.namprd12.prod.outlook.com ([fe80::ee1d:ec68:60a8:13af]) by BYAPR12MB3238.namprd12.prod.outlook.com ([fe80::ee1d:ec68:60a8:13af%7]) with mapi id 15.20.6111.020; Wed, 22 Feb 2023 00:56:21 +0000 From: Ziemowit Laski To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [PATCH] Use CONFIG_FFRTMPCRYPT_PROTOCOL for conditional compilation... Thread-Index: Adk3kzHWrTKSk2WGR9GMVSb/5y5ZoA== Date: Wed, 22 Feb 2023 00:56:21 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=ziemas.net; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BYAPR12MB3238:EE_|DM4PR12MB5054:EE_ x-ms-office365-filtering-correlation-id: 66bae259-f84d-4b9b-50e9-08db146f9d42 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: JZPUFDauhDr2GtsA8d++KTud/HX0IL38GMn36NJlu+IxwGaaxJKU/OxUjWp9eSeDp+V5mPkgHM0nxkweS7Ul6/OboPmvFxxAgfGfq2ctHgmgJdpEG+z0rmV+sV1wjkb+XYfaRrNj6RiuZYOYwHgOy7R0CeMSFZEDXPg8FXVF6HtkH3+ZQAeMvw+/bVp/COhs3Utkrbsxm/RW5iH00dwowcaMaLslAqq+dsoZrxfihWG58W37nRJdgTxecOyFvg6+TAWrHbiNCR0FmoW7x+OwzpatIl/4I2CrfTQt0DwIOSA2Z7bkXB9uipIcdYMUOLKv3NLNd59e00Q6ARnigscGyZ4UHrgp1OEZd5SwU12swkeZiO+hE2NEDTcloEMjEHbqYCfdJo36ooBbOOz5dn6PJnOdjKLPnnLQazVOZb08qwcEBjcv5yyF0GvaX+ALBGmzGrryVYLtCdrGr1AVzxw4t44ZDemnnW777svPyKKWMsj2NngqIbsXVNuxsl0CgEiFKeIUZDAKyOwgsw7Xg9x8/LbKUPcw3EWS0BFJc/jytELtVufU3Fer+pvcQgKaOKmC7/HUAe0aWoJgYHbE15BB4GrFkTFuj4hr9Uw8ekVPhnoAC8md6WY9pbt1Amw3bp87ujWbMVL/rioflp2zSaGYK9UcqLlAhMDIRCbpavlPSZQfSxz33vc0FD+s3fGh8k5othXWoq/cAsv7t8QW3BHg5A== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BYAPR12MB3238.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230025)(136003)(396003)(346002)(39830400003)(366004)(376002)(451199018)(2906002)(122000001)(9686003)(6506007)(26005)(186003)(38070700005)(38100700002)(5660300002)(52536014)(8936002)(7696005)(83380400001)(33656002)(41300700001)(86362001)(66446008)(64756008)(6916009)(66476007)(66556008)(76116006)(55016003)(8676002)(66946007)(71200400001)(316002)(478600001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?+GLeYipkqSibPlo6Nzb3aAuSiAj1?= =?utf-8?q?Oh6A4JWIGtIrN10Fl2edUJMf50b6NzaUub5J5/C0xo9a08W3RzaGt/2rkdzS4+5NW?= =?utf-8?q?iJt88q8TI6K94n5PUWf/Fq79OAxT7EYXNcH5qx8BBoPziPbRVGPfgGCgUrwOPTYtL?= =?utf-8?q?Jrni/TQfzOIGqFIoLrvQlFvQoRwE62Ou54jrFUC/l810q87ioDxlJRiOjwBu0p01D?= =?utf-8?q?2uJowLyne+ie2vGro8Hzu2m4Ni0Q43qtFBT4dABgi5rQ34ldN/XiSBu0aW69fr7bH?= =?utf-8?q?mR/Gf5JwDAa+Q7TMGLFt+hcor0kt+nYVv7wsDd52pgM/YzNq2lHigTdBlMOiv9AX1?= =?utf-8?q?SsjPyrJwY0JD3o+RtGwItG+aLWaKw8tXIZXZzCuw8aV5va0yC7ueWzCrjyblQv0mw?= =?utf-8?q?fvFge74dVxRVlxCVeGB8jbgbGkbNXe1wf2wkQJwy+r8fIjHPPrdTxs9dbRG5l77Ve?= =?utf-8?q?U6GHwGXGc7D+hWMquSBbDnKJqb5uk33MAfsua7KG5p14s0rbKeOvLaea8pQ6XMCm2?= =?utf-8?q?I7AHMdZPBpxzM+rFykXqMQK4ESDu0Ngo0FfX2k4jeWy+NDRdQHmcEpZ6+KQz0/897?= =?utf-8?q?J9OJlrlTFT5HjyBLgqEryPWwQBvbdLn2aXU5a4u7XbqC34MB8H7piWxAM8vzMADHY?= =?utf-8?q?7P6X3JhGIbnon//IHE7fwSlCBjPBd+pM2pPRke3jvj95zC/ZtzewT5E5VOvekVHoF?= =?utf-8?q?KYqG9SPKc8bD6TxZSO7Hgz9RPTpHRMuqga6AJUaJcEiA0YucoXyO5uhyxniRi/Ja2?= =?utf-8?q?E72cIaLbFeWAZV0mORE79W5lDS7p2xfYF9r5TrFcznX8htIdzwjXRQ3EwuPPgA9pH?= =?utf-8?q?XbOHci7WIBaegMGRlqIraEkHqElGdGdk7Xclmna6hQaIjQQP3BcOEa/dmbJQq7pvz?= =?utf-8?q?T6NAW9MVDVR1lXXz6A+5TRUePQKfOoVZ4TGgYxeRb50E2z9ojlKai3UIOvH+jc8WY?= =?utf-8?q?H8081NLkDXSfH5kzbMNuktb+5lMdKbbnKtr4P4yIL90slLbFFZh8nTMact5g6QCM6?= =?utf-8?q?hg5HsaWWupR6jei6yb58xEonpyL/boxu11A5/erkR2xnm9h5DJOoUd7nOMFu85/i1?= =?utf-8?q?ZHsgRLjLTBZau4UNwH/TrQ8kA2jgyYtRCzJRwndhHFu6oylkVymPYPDj4lWKFBDpA?= =?utf-8?q?1S3nYCS1MPaKtnBwgwzYP7uIL9xiI/dj/6AM1D0TIGjEett7EeiAe2XKX0IhvOzRa?= =?utf-8?q?wA/NOCDQsdUc2/bz55g1r4H5qY/JTEoxeTBopGzK+k/OpVYMBmeNoDK1IpazsZPwY?= =?utf-8?q?tXbZw6WxWFoXcohctt9w8w6afep1ZnDLdvkYw2SHaaaC2plgcWzcuVXfPoPtQaDdL?= =?utf-8?q?YolL8WN5oCyk3QnY7NZMe3XpoWcoAA22pWypoyytjMgNGPhT0/e/ZTp79hdi8R6dM?= =?utf-8?q?Jo1MfMDHcKkmDm2H6Buamm9jFfhWJUYmdpp0Ev79O/j6tmRhD4sDLd7JEuJb9b5cK?= =?utf-8?q?hFErAOlgoXQRKk/Bw/Oaqfr6812isdMH+g5VGtwrsucTlFt28ltePgS0=3D?= MIME-Version: 1.0 X-OriginatorOrg: ziemas.net X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BYAPR12MB3238.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 66bae259-f84d-4b9b-50e9-08db146f9d42 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Feb 2023 00:56:21.5039 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 25bf35ba-6df9-4cb3-af27-d7d470d29fed X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: pyRTbag4X8o0eJO7R7cDrrAmX1d3v00/+mx2qttwV3g95Kpviqj7sEClhH+vtZCo/TUUEq+cgyBu4iUghc4PDQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB5054 Subject: [FFmpeg-devel] [PATCH] Use CONFIG_FFRTMPCRYPT_PROTOCOL for conditional compilation... 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: 84Wt1nM/k9Ll Use CONFIG_FFRTMPCRYPT_PROTOCOL for conditional compilation and NOT run-time evaluation. If optimizations are disabled and CONFIG_FFRTMPCRYPT_PROTOCOL==0, the compiler may fail to get rid of the conditional blocks. Alas, the blocks themselves contain calls to RTMPE functionality (ff_rtmpe_gen_pub_key, ff_rtmpe_compute_secret_key, etc.) that we have explicitly disabled by setting CONFIG_FFRTMPCRYPT_PROTOCOL to zero in the first place. Signed-off-by: Ziemowit Łąski <15880281+zlaski@users.noreply.github.com> --- libavformat/rtmpproto.c | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) -- 2.39.1.windows.1 diff --git a/libavformat/rtmpproto.c b/libavformat/rtmpproto.c index f0ef223f05..5ff0e0f443 100644 --- a/libavformat/rtmpproto.c +++ b/libavformat/rtmpproto.c @@ -1222,7 +1222,8 @@ static int rtmp_handshake(URLContext *s, RTMPContext *rt) for (i = 9; i <= RTMP_HANDSHAKE_PACKET_SIZE; i++) tosend[i] = av_lfg_get(&rnd) >> 24; - if (CONFIG_FFRTMPCRYPT_PROTOCOL && rt->encrypted) { +#if CONFIG_FFRTMPCRYPT_PROTOCOL + if (rt->encrypted) { /* When the client wants to use RTMPE, we have to change the command * byte to 0x06 which means to use encrypted data and we have to set * the flash version to at least 9.0.115.0. */ @@ -1237,6 +1238,7 @@ static int rtmp_handshake(URLContext *s, RTMPContext *rt) if ((ret = ff_rtmpe_gen_pub_key(rt->stream, tosend + 1)) < 0) return ret; } +#endif client_pos = rtmp_handshake_imprint_with_digest(tosend + 1, rt->encrypted); if (client_pos < 0) @@ -1300,7 +1302,8 @@ static int rtmp_handshake(URLContext *s, RTMPContext *rt) if (ret < 0) return ret; - if (CONFIG_FFRTMPCRYPT_PROTOCOL && rt->encrypted) { +#if CONFIG_FFRTMPCRYPT_PROTOCOL + if (rt->encrypted) { /* Compute the shared secret key sent by the server and initialize * the RC4 encryption. */ if ((ret = ff_rtmpe_compute_secret_key(rt->stream, serverdata + 1, @@ -1310,6 +1313,7 @@ static int rtmp_handshake(URLContext *s, RTMPContext *rt) /* Encrypt the signature received by the server. */ ff_rtmpe_encrypt_sig(rt->stream, signature, digest, serverdata[0]); } +#endif if (memcmp(signature, clientdata + RTMP_HANDSHAKE_PACKET_SIZE - 32, 32)) { av_log(s, AV_LOG_ERROR, "Signature mismatch\n"); @@ -1330,25 +1334,30 @@ static int rtmp_handshake(URLContext *s, RTMPContext *rt) if (ret < 0) return ret; - if (CONFIG_FFRTMPCRYPT_PROTOCOL && rt->encrypted) { +#if CONFIG_FFRTMPCRYPT_PROTOCOL + if (rt->encrypted) { /* Encrypt the signature to be send to the server. */ ff_rtmpe_encrypt_sig(rt->stream, tosend + RTMP_HANDSHAKE_PACKET_SIZE - 32, digest, serverdata[0]); } +#endif // write reply back to the server if ((ret = ffurl_write(rt->stream, tosend, RTMP_HANDSHAKE_PACKET_SIZE)) < 0) return ret; - if (CONFIG_FFRTMPCRYPT_PROTOCOL && rt->encrypted) { +#if CONFIG_FFRTMPCRYPT_PROTOCOL + if (rt->encrypted) { /* Set RC4 keys for encryption and update the keystreams. */ if ((ret = ff_rtmpe_update_keystream(rt->stream)) < 0) return ret; } +#endif } else { - if (CONFIG_FFRTMPCRYPT_PROTOCOL && rt->encrypted) { +#if CONFIG_FFRTMPCRYPT_PROTOCOL + if (rt->encrypted) { /* Compute the shared secret key sent by the server and initialize * the RC4 encryption. */ if ((ret = ff_rtmpe_compute_secret_key(rt->stream, serverdata + 1, @@ -1361,16 +1370,19 @@ static int rtmp_handshake(URLContext *s, RTMPContext *rt) serverdata[0]); } } +#endif if ((ret = ffurl_write(rt->stream, serverdata + 1, RTMP_HANDSHAKE_PACKET_SIZE)) < 0) return ret; - if (CONFIG_FFRTMPCRYPT_PROTOCOL && rt->encrypted) { +#if CONFIG_FFRTMPCRYPT_PROTOCOL + if (rt->encrypted) { /* Set RC4 keys for encryption and update the keystreams. */ if ((ret = ff_rtmpe_update_keystream(rt->stream)) < 0) return ret; } +#endif } return 0; @@ -2643,6 +2655,8 @@ static int rtmp_open(URLContext *s, const char *uri, int flags, AVDictionary **o if (port < 0) port = RTMPS_DEFAULT_PORT; ff_url_join(buf, sizeof(buf), "tls", NULL, hostname, port, NULL); + +#if CONFIG_FFRTMPCRYPT_PROTOCOL } else if (!strcmp(proto, "rtmpe") || (!strcmp(proto, "rtmpte"))) { if (!strcmp(proto, "rtmpte")) av_dict_set(opts, "ffrtmpcrypt_tunneling", "1", 1); @@ -2650,6 +2664,8 @@ static int rtmp_open(URLContext *s, const char *uri, int flags, AVDictionary **o /* open the encrypted connection */ ff_url_join(buf, sizeof(buf), "ffrtmpcrypt", NULL, hostname, port, NULL); rt->encrypted = 1; +#endif + } else { /* open the tcp connection */ if (port < 0)