From patchwork Fri Aug 11 10:34:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43203 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8b1b:b0:130:ccc6:6c4b with SMTP id l27csp1253257pzh; Fri, 11 Aug 2023 03:34:00 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFTy2kAZc44F7jsS8pGAwn1EDlcUyZKGi1KGFWxY2l9WBuDoimlr4EnP0H+cWb1sUJV6Npu X-Received: by 2002:a05:6402:1006:b0:523:1fa2:4f40 with SMTP id c6-20020a056402100600b005231fa24f40mr1302155edu.19.1691750040541; Fri, 11 Aug 2023 03:34:00 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id f18-20020a056402151200b005228c045517si3170890edw.519.2023.08.11.03.33.59; Fri, 11 Aug 2023 03:34:00 -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=@outlook.com header.s=selector1 header.b=i4RJ1ehb; 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=NONE sp=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4BDBA68C6B2; Fri, 11 Aug 2023 13:33:56 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2049.outbound.protection.outlook.com [40.92.90.49]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id ED80768C577 for ; Fri, 11 Aug 2023 13:33:48 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bMhvAwE6+ScRIm6MUjUJsPrcrLJqzpCw7SQVDxEqcxK8wfYKnlE+LXtOhK4ksA+XChgwwa2tiSHyt7qjK8fv1hkXbqNtVLUP6OLWjf2qoTv1c1jlZGNkHctmecTMXLFpnyyyBZVwIdGNvPo14ywl/aSAUv0vso2bQBme+paLno6v8ZpKXW/KKUJZRTf0wQLPu4jw/IxW64lsscFdFynNnwi8QDJv9vZTmXb9ExgdXHO+6TnlFZpuG83qMQfp95sbEXSa3iZBKG+KtjYk3s9+JE1ZY69Rcm9vMPmAaRuXZyBiZpoPtpmxrVMatoFZq7gj52xED0PS7gKrn4GQx4kPzA== 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=wVqN4iGxd7ES2bIg/BO4gBdZxTSLGaBo2jyWTSJv/PM=; b=eOYVC+hXS34BliKq6I7VGt/gV6qSoUTCLEEq3gqV9TUnY0gOPX0VmTw9WLiFGvyS6L5wNpoMJTaVrzrfAoP36i7ZQTwMGm54W4PyvkacQW/Q2JzsRJjYc3F4lpqTfOsoPtTXLAgyClJdsNir8TNHMWllpVpZNnWntKRePuTz2Sso0SKBhmUKaVngS4C+Bp9kDzAlKsEGhlVfloVG7xVDIf1E9AjtAyvN8NhY+9zcBwC59EYbrkGBEon2llowH5Iy9mdrK8B8y6cuCm44D5vtHqH2T0sp3GYbYxdvu7TCdhSn/AaRv2u6NuJXFeT4EXQujGZ+10C7tPKYmZ6hchbIEQ== 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=wVqN4iGxd7ES2bIg/BO4gBdZxTSLGaBo2jyWTSJv/PM=; b=i4RJ1ehbcfKOJC3bLQ/WMTkgSw1MhFPF+y/ow2b6g0igG1qRVtnKvrmlAJx9TtuFUbqN7fDxxdyYa8e28z+6gNmFXCoYxnEKqeCxN34Z5yI2t1jIjRhZt4K17ryzgf5aQG+v3YzQN+9upevshG2MUKTC/likhOhZth+z9o4DCRUIYJ3HWMEj07mxmZ2e2BKBI4UEMuq7nZdT85Sj5viA+h3KKur02WUEm25dbq8QEwFU5lTBwuCtDzi7Bat4hONIobVs7lR0EYddLzQTTh9jDOMkSJfb+NSf7UUfQUArrTn8oX7sNaf5Mg4QsTs8JKYDiKt+rkDVPkVV9JMqHMLM/Q== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by PR3P250MB0356.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:17f::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6652.30; Fri, 11 Aug 2023 10:33:45 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::5e01:aea5:d3a8:cafa]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::5e01:aea5:d3a8:cafa%3]) with mapi id 15.20.6652.029; Fri, 11 Aug 2023 10:33:44 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 11 Aug 2023 12:34:32 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 X-TMN: [jPvpwmCgdaMEBmgqJ55dgtN/lYHsVAFCPY5heegdUyI=] X-ClientProxiedBy: FR2P281CA0091.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:9b::10) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20230811103440.2278009-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|PR3P250MB0356:EE_ X-MS-Office365-Filtering-Correlation-Id: 43a873a6-c6ce-43bc-f6ac-08db9a56693c X-MS-Exchange-SLBlob-MailProps: AZnQBsB9XmpEPU/wJLY7hod/UA3ILpuOm4iZ2jWpxI40rZUPtYEFlcfSbWcPVzjJ3aRfRbQ9wFoDFESUlh01i6La7JKZUI8i+sRkxFV9h32Tqxn3nv6ihQaPFn7GSioeoCEE3+BE/VO9/sN3z9W5ne3e6W3Q6YhoEJvq00CQeI2yA3h80gOnntWj0c0LcIc1sXqXtL3vLtJSHhTjAJlmrl3J9g30d+omZjYVNYI5PcblLxdtGUH08XsyRDLZT87KzgMTY8Cp32NS7oFoe7oOzlsrY9s2Qy0tRRVcMl7MJL67tAnivai399bLdj3hKwq6cf/UR+AhjifrlCzAoBS1NptdHXivTNeHWQYeaSLqL8R4wxW6yT3yUbIadQBAiFkRDb/CsJQMpVDh8QnAohq5zcOaEzjPtHwqTmzs65oIb5nMOHxlrvbprT0B6Zv2OR7qwz5u7tNuj4A8PK1bzEKAnKNkVfwJHRnDRukBazoQR0j5kKsjejsFubf556Aqqc0puMvSQ84pb2CY+GFlIue7SX1yVWby+znLcm2H+1GW3kktiWKUIZ0JOCu5/fOeZOYmKX7nKyMjzOwOujtSRO51CwGQgkjBh+AFhfdsuaGw3lF/f0vD613QZfshmT7OJirbnHOkJpZsyQPg4CC4heOEStZROv5brIpsp7lIupcRTyoUV4Aa3ZyvAtZtz+2gEIXbchbDQa9B5oRfwTz+crPCzhtA7QdfxCfjtxDzcewRJSBGavbErwp7F2LjoMdHOnDBDYN4mQeXbbo= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6tSWrrSVOmfuHjwg9uCzvfrTxbqOYuUFjgACeWuJBH0OZBNY1XO5sB+OC/c1/fLLNaCHqsGOFgdzw/A0L1Jgb3GTezClgMNQRS89dtj2xe3mjEw9RZzhS7Zl+P7aH5Ljzy1xBvWxGX89OeM5h+D30aSu4jniw9p8jCemZlPA646aLAOQOQI7CbAAfzrUNpEV4A8DJyhAIHGxF4NF054E/p08Vmck88fBxFSNLqPORmi2B6wCB/ZEEjtYCYlt5i8YBzoBLB6lwwnYRqKWApcPsSD0zyRyj2gz1aEeo4e0nRfQNv/U+6JyApVwWlNK8pE9KT1g1aSKJ5HufWVvhu+tQhlvm574fniU2U3DIgtDYvqeiqSdjBeHk8CpUwFzSeKrnV27UE2HRlPy4450mN2qFN4lgK6NdLAmVq3eUwBCKhzJMx+2DmNTOI/GqkfPghigsfTA/7dBNkqorfEQ5gIn9+cI4UsWpuuUBERdvL53nZMv8a3NeKXOLIsw2w1TPqTLga5iBWkXRet0l6gwFfXAhCNAim4ncU+lAy7zE4D7XQs50p1rhdftKCdOJRNPpbJbOR2gRRjQSvIxbJ8b9LyqYLidUI0jnGDti+GDKPqclvIYoclvAKfy3w+ir7KaALbH X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 4n3OCh3UAvmoBiH3rRvEkXN5f6Qy7R6uEF60Mdx2KJ/39rse0ASmTUnGfQkl6g8w5oeB8B7EMccEPYPX3LuH6OKuI21BrJ+VU2YIcnLx4GCSi4f6BAij/D1iB3Bcp7eoUUPyG4cc9XHV5WBfHdyi8nGJy3OMe4bfCwzXN5JGrVbdY/pvsYDhuQclRfGf+SzukFI6gjyU1kKXGyv02uPZmlNcsGTOTLhOokiSf5JPdT8qt5QIWzcLzaV6ZY4HwgLtOkpJJlidhk98jQSlOJ74MF1uDb1WWbIQ9Ielm4UP8kvgpbuGwsCisVinYuKeWwbOwkGMydt/vTM+rKgNPmW/s1/7NGcFBAZaknxvxDl2QwiV9wy+Xf+mwt6gEyLhB024W3o4GA3uHK11xpdxxdMtAdlC17HyHoPLPZa3aI/N2RzVcR+nSIrq5hsctTIyCsdBDa3p9Fs3njL75E6U894VDyCvubbRp4OPYSHjfuPRzCVl8dB/4BivqVOq9bHuwlLl498pDjNWeLsYIkFiu9TKyNasRhE3eJN2C+vfPfVexN6zsdd+m/RPmaBwMbYcs84UKtu8b6hi+zYCHpPrGtdLVd7beMik0PVbpju+bDJTSGuhhnk9Y8lEMGKyls6jCYlMmwGEm+9qAb/fkRer9dsNMTZLpW2ilNJ/tZG9AktAz0+uhHT3Do1DqBg4ksEK+Zobzsh5NGYvcc+thrq8LQc4qOW5VoH55Xslsn6kzupXL1oz6Ti4w7fSnV1r1WkN45fyoKCEGUDvKLGqUVygWncVRE8FJVsND8kojr3XXkd7+FsF+PtaCGv/iA4antbrUfkuMG73JGfG+q8LlaMKdqQkExV6n9UYHwFJ9P0eKpn9AJbyRD7z9P9Y3m706hVZfov4WsoRqdTuezZWxGtTpGLpllffhFh/bviJHvkUzeSmpeP9vWw1KKbjLGUdFVJqlWUvw09F86HuGZZ+M5eaN7xcbwh8pyW2K/kL9nVtm+ynHA/gj++B1z8OnGj5CiITxC3S+/7RDPZ6dPaC1BPxPtyQtNIFIgEqX9Nsd8G6veFNNfkwZXcOf2QUS7YuhPTVCqKIeA14NrPqxG+ptnJEjujZo64fzJuYes4Q1GlcVfATJHo+XRekgk1Jc+LyEKjWRYX7COL4mqikZJWncnpjy+/Cb12+HTs9SmIevEBt0Lu5dIOOWQH1tXzn7jbewmwvHfn6p8wqrrfa/5g4QIbvQcP391tb1as+QDzU4I/fBaE0b/0nfhIRPjuhe1muCklIUbaY X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 43a873a6-c6ce-43bc-f6ac-08db9a56693c X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Aug 2023 10:33:44.8740 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3P250MB0356 Subject: [FFmpeg-devel] [PATCH 1/9] avformat/matroskaenc: Avoid atoi() 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: t6L5sPfEty8j It has undefined behaviour in case the value does not fit into an int. Also stop allowing to override a stream level "alpha_mode" tag by an AVFormatContext one and properly check that the stereo_mode number given via a tag is actually in the range 0..14: Negative values would have been treated as zero before this patch. Signed-off-by: Andreas Rheinhardt --- libavformat/matroskaenc.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index e813ef86cf..9bdf087c67 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -1592,7 +1592,7 @@ static int mkv_write_stereo_mode(AVFormatContext *s, EbmlWriter *writer, // convert metadata into proper side data and add it to the stream if ((tag = av_dict_get(st->metadata, "stereo_mode", NULL, 0)) || (tag = av_dict_get( s->metadata, "stereo_mode", NULL, 0))) { - int stereo_mode = atoi(tag->value); + long stereo_mode = strtol(tag->value, NULL, 0); for (int i = 0; i < MATROSKA_VIDEO_STEREOMODE_TYPE_NB; i++) if (!strcmp(tag->value, ff_matroska_video_stereo_mode[i])){ @@ -1600,7 +1600,7 @@ static int mkv_write_stereo_mode(AVFormatContext *s, EbmlWriter *writer, break; } - if (stereo_mode < MATROSKA_VIDEO_STEREOMODE_TYPE_NB && + if ((unsigned long)stereo_mode < MATROSKA_VIDEO_STEREOMODE_TYPE_NB && stereo_mode != 10 && stereo_mode != 12) { int ret = ff_mkv_stereo3d_conv(st, stereo_mode); if (ret < 0) @@ -1748,11 +1748,10 @@ static int mkv_write_track_video(AVFormatContext *s, MatroskaMuxContext *mkv, if (ret < 0) return ret; - if (((tag = av_dict_get(st->metadata, "alpha_mode", NULL, 0)) && atoi(tag->value)) || - ((tag = av_dict_get( s->metadata, "alpha_mode", NULL, 0)) && atoi(tag->value)) || - (par->format == AV_PIX_FMT_YUVA420P)) { + if (par->format == AV_PIX_FMT_YUVA420P || + ((tag = av_dict_get(st->metadata, "alpha_mode", NULL, 0)) || + (tag = av_dict_get( s->metadata, "alpha_mode", NULL, 0))) && strtol(tag->value, NULL, 0)) ebml_writer_add_uint(&writer, MATROSKA_ID_VIDEOALPHAMODE, 1); - } // write DisplayWidth and DisplayHeight, they contain the size of // a single source view and/or the display aspect ratio