From patchwork Sat Apr 3 11:17:14 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 26720 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id C2CEA44B4F8 for ; Sat, 3 Apr 2021 14:17:33 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9D10D68A753; Sat, 3 Apr 2021 14:17:33 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-oln040092075015.outbound.protection.outlook.com [40.92.75.15]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 46B56687F3D for ; Sat, 3 Apr 2021 14:17:27 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=d+mYL344eA8IPVC/TBpX0wRgof7ZfICNf35VxpwWLinHf1Disry7L7aEkmtyW6DqeqsoBSOgdfkjwRA27i+G07oMAJYj1RGX4phXFfjM/9xTzGdR/tPOx70hKzKvjNvvjxe5N+qDFwVmxw999UTWqlq73ktIEuexLkO7yNFOoFovzUlHnZ/x8pOJumwL1MJIO9kHTSY7RQWEMw5n9ukXpQqxxiiV0rdXxYbns0TIMwwTWfF+n/eahDa6D/IAy+yDyXGPW2BjhkOU3H1RM9OtFmj8kWsPe0pgd/5xMNHCC5TRyfTjhCk1OQIUPQeI50xp1iV3UJAm+SCpSKGrAmUBdA== 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-SenderADCheck; bh=fs/pPZfrdAMnha9MU26sK758SMPhVryvdCXvULOn99A=; b=CW1a4S83RBKw1UYmb2HauLhTg9LdC3DxnrC52k6dm8CDDBINov5JSdBwpxq2D+aOdiaEA5t5oPLOoD1V2+sgn5ljgLXO5bjnCF2tG0fkDrMy2R64IlQ9MKn8FmKRNkz3PoqQZqouZha9rwI94ocRZ6G0wfz3FL/CnYZE7SakuSkemRzXljt253UZtkCogWNvwEgBsSStx68HKQLlNTPm4g+5yyQnFkS1bP6yAGlBBL6hSJrGKP+fPoaMCtf3hu3TUmWPAO4JGgAqAP7zPBtJnrOr+kUxxwTGFHpfAYU1XOggZs7l1gc/P3PiVw5xhwR5WqHgMvef4imlVVpzpyx4Ow== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=fs/pPZfrdAMnha9MU26sK758SMPhVryvdCXvULOn99A=; b=TuCBnEFw886/s2qPt3QfBq0hIFn9DhD9AqLwnWGUQhE3pT95LqU35dTyq60ZQtZjF2MiHYB2Z5puJVxt4oiuVC25vUgjQJcaR0+L5ATfq26ewP0fX4dNa3ykeHcPl0byO7RJuh3OjCzvExCoqW9TkVfE41miSszcKChP5lg8ezWwnfMXfrMy2OpCCcD47jhUoKSQc4w5BbvVuUJpxp6nlz09eKIky+fVNJ4A+DTjUCVdXIglgihg96S6zfte03ItmKb5SESq4WDMXIhM/JlQKaFEpib1qYFrpp6J3npG9kdVULaWCCtGVLA1e4HrmtygU8d2kg/s29J7ahZGc5cpLA== Received: from DB3EUR04FT006.eop-eur04.prod.protection.outlook.com (2a01:111:e400:7e0c::4e) by DB3EUR04HT204.eop-eur04.prod.protection.outlook.com (2a01:111:e400:7e0c::180) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3999.28; Sat, 3 Apr 2021 11:17:26 +0000 Received: from VI1PR0301MB2159.eurprd03.prod.outlook.com (2a01:111:e400:7e0c::53) by DB3EUR04FT006.mail.protection.outlook.com (2a01:111:e400:7e0c::75) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3999.28 via Frontend Transport; Sat, 3 Apr 2021 11:17:26 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:14B0AA2FA419E63573EF1AC7C000899E4A59571FE0D4703D18F04C2387355887; UpperCasedChecksum:D7ADBF5DF9FA2DB92BE96792538CF057876E5D7579E09165790A6CD534D86ADF; SizeAsReceived:7416; Count:46 Received: from VI1PR0301MB2159.eurprd03.prod.outlook.com ([fe80::9574:7cdc:6be4:137f]) by VI1PR0301MB2159.eurprd03.prod.outlook.com ([fe80::9574:7cdc:6be4:137f%5]) with mapi id 15.20.3999.029; Sat, 3 Apr 2021 11:17:25 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 3 Apr 2021 13:17:14 +0200 Message-ID: X-Mailer: git-send-email 2.27.0 X-TMN: [jREhPL1X1nPmqRJAv3OlMncv3Jan48Nt] X-ClientProxiedBy: AM3PR07CA0062.eurprd07.prod.outlook.com (2603:10a6:207:4::20) To VI1PR0301MB2159.eurprd03.prod.outlook.com (2603:10a6:800:26::20) X-Microsoft-Original-Message-ID: <20210403111714.3270791-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.137.96) by AM3PR07CA0062.eurprd07.prod.outlook.com (2603:10a6:207:4::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.8 via Frontend Transport; Sat, 3 Apr 2021 11:17:25 +0000 X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 46 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: 53ba47c1-b507-401f-ec07-08d8f6920f27 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiQPaLYvx5HwmyjZ1rrGhEMrofIGurNpJkrFGxayX8n9J99l4oxMBGLMhu1Na4ufMuMyyuULJodwzCRXG1ILBQ9pXzJXAGGqb3w7WJHW1R2kY49AqqnOfqBs1lzkq3+Du3STHXX/aNSaOehzDkDuFP/rPVfeM4/ECO3LWFPLRVUVmFgNOZo1bFglTmkigEn2K7nsPcDLDaOy6o79X7OZWfK5EuLogb6Q+AlOa3Hff2kcHrfE4oryh592R1HoMX8aLhNl/zu0+que8iEdFaP1QobKcdDg/Jr4c3iDSO5nVZoMjNhG+JWTlgrGHislW7Ct+HG4+T5rdf4gPH8U050fFL085nR1S7M783dnjEFTmoOq0k+wm/3ar7RtZBVGj8/cvyveq+VyWJ8IVKjzRJ263xm3TjzmUJinYcWSgE0NL0wU39FxnwYq3bSsqRPgigRxi4whL4AO5OA4FE+fMKTwGSadUZSIJ6zK2+xBs9tXmewxofO8AL5BSf2pE8IHkCUu0x8ONas1SDhVzQ1ZO6FGa0l4pYhaGh8pAmDznhFQGOnu/ZcC6yiEG4J9QyVLZ9Pv9ok7xgyaYri7QvyI6rR1b6kKYIKoeFwBlbrZOv8P/7F6I2JYRs+URBIh5v480GoRHmqVm+bH8GpPlx09eUMw8VIAJ4SPWHtvA7cK6SlTAzcPkDFW39K36niukVg9UR21e0fgBzeJg9PLgTIEwe60EnSwWY9vsga/V2LTXl/a6sHg+0YN/oflqPOIztReXzrjAT4= X-MS-TrafficTypeDiagnostic: DB3EUR04HT204: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: CBnbP8T+2bDCHq5UKuKj1fHCN5JH7k8a/CObSdBHi2Rfm00GzvnwDaA1p7WA2W+3ScA6EvpXhYwI7mMAuyjn6OjCq/1f9cmLh7DQ38PaSv4scvkliXs69iLANsaGO3DnmXse/A8vFgOos9fYWuUbBxgcoBM0BS9IkjUvK9WlBt+1AG6XxfDK11CHTGABRhoQtBr597hdaVtiY3mxIxD62zYXY3FKkwwtauiSHYXop8RYWnJXY0wCjq58eOJtyp/8Q28RTVBwq7COnrB9KtvHxR9mWWipSJYOFF5WK+vbqUtY67xnfGGQz7am5xMMG3OgaeLilFnXL8RzKtE5xA1suNRaCHWpkToKOA/VXwMCKBlZKvpklzSC3AwEOyneNaduyqZ3st+I+BnsbqRrSxppXQ== X-MS-Exchange-AntiSpam-MessageData: HxIxJLXYLXbFUdc0h4RTkJGyxpMcB5hyDKE5mm94SesiZDjT+Sx2D/dsJNviMsnwAJECwmIqiBHEsBCu6taQTv599voP0Wqid7U0X7yEuXAmog3vLUwek8jed69HpOj28oS6MWJFS+VwtWWNXurfcw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 53ba47c1-b507-401f-ec07-08d8f6920f27 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Apr 2021 11:17:25.6256 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-AuthSource: DB3EUR04FT006.eop-eur04.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB3EUR04HT204 Subject: [FFmpeg-devel] [PATCH] avcodec/a64multienc: Don't use static buffers, fix potential races X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" render_charset() used static buffers that are always completely initialized before every use, so that it is unnecessary for the values in these arrays to be kept after leaving the function. Given that this is not only unnecessary, but harmful due to the possibility of data races if several instances of a64multi/a64multi5 run simultaneously these buffers have been replaced by ordinary buffers on the stack (they are small enough for this). Signed-off-by: Andreas Rheinhardt --- Will apply this soon unless there are objections. libavcodec/a64multienc.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/libavcodec/a64multienc.c b/libavcodec/a64multienc.c index 55616c8524..91c89c87eb 100644 --- a/libavcodec/a64multienc.c +++ b/libavcodec/a64multienc.c @@ -107,13 +107,16 @@ static void render_charset(AVCodecContext *avctx, uint8_t *charset, uint8_t pix; int lowdiff, highdiff; int *best_cb = c->mc_best_cb; - static uint8_t index1[256]; - static uint8_t index2[256]; - static uint8_t dither[256]; + uint8_t index1[256]; + uint8_t index2[256]; + uint8_t dither[256]; int i; int distance; - /* generate lookup-tables for dither and index before looping */ + /* Generate lookup-tables for dither and index before looping. + * This code relies on c->mc_luma_vals[c->mc_pal_size - 1] being + * the maximum of all the mc_luma_vals values and on the minimum + * being zero; this ensures that dither is properly initialized. */ i = 0; for (a=0; a < 256; a++) { if(i < c->mc_pal_size -1 && a == c->mc_luma_vals[i + 1]) {