From patchwork Sun Mar 10 14:12:16 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 46933 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:dc95:b0:1a1:738b:6bc0 with SMTP id ky21csp740914pzb; Sun, 10 Mar 2024 07:12:39 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVCD++vVjougF/Y8WD38SIFCbKij7kDCVE++BuZToZapPMYX1j3Dy48fcM2m7nKO6DcfXg7MKRfJIE80FE8OkdKEVF7L4QWrWySdw== X-Google-Smtp-Source: AGHT+IF2sdf9LL+Ld6gqNHrxJcbLfTsg5pptDHnVNExowYCMnI+zAsf3ABp7BnvzaDGgg9xbrNZq X-Received: by 2002:a2e:7e0e:0:b0:2d3:fca:dae6 with SMTP id z14-20020a2e7e0e000000b002d30fcadae6mr2288330ljc.2.1710079959447; Sun, 10 Mar 2024 07:12:39 -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 c12-20020a0564021f8c00b00566e859a366si1602839edc.306.2024.03.10.07.12.39; Sun, 10 Mar 2024 07:12:39 -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=lS5Mo2pl; 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 BAA0568CCD4; Sun, 10 Mar 2024 16:12:36 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-VI1-obe.outbound.protection.outlook.com (mail-vi1eur02olkn2058.outbound.protection.outlook.com [40.92.48.58]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A81D268BCA7 for ; Sun, 10 Mar 2024 16:12:30 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VlbRKJPgZlAIPdLgvuMuhiYSIY9rSy+iC1CvpKA3pXz1ivf+tX9EeMDSC3IQ8iXEk0GxRk5CdJtuETshyOw+foWAW5PdWu59sNqP1DfHVBaIsQ5wJXz4thb2fksSRzAlfdDcHG8F8bOqFNL7+Yl1wi/ocCLM8fK7t+ffQ0GV2GJawp8YsGzxVH/wAgRsv/J9Gza+ByKf+hgnjNCr18l3PDenVTagkuSwoYp9uFZIgVgyeQk0YSAaZAaPrrbm3Sf8QG6XSNoqXpRbVrmhM33fp8de/q+kaal3kQmhLcfdtfUIyYrFOd0uQvjbnlgHLo5sphlb7nirmCXzGvSqBxP3jA== 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=gFjwJKCEU+MXjlGpKmWusO/1Vpgt5u45nxEpq7p/8jE=; b=SeDZbZ8+upH6PufElGdRY2kM8YH1ZJw/v//tfsdo5qqEbP4HZgnlNgdUFLMzS8ll5EXgte6bn0DIWRdhWUZSPfKNpvmU0eAl2b2QiOp0MQClIDH1kEcnl6Cue29pZXmObNhURw/Yf9B8jqUgmsYTu5PyrV+IXf/W+UMzHCCc8SvCoBAkmwFWvwz6ft9/YffFgRJ6SE343UYeoQod3qFt2ugP1Jn3VopeW7BmATrqPtlED9VwsbALR2FxWLq7dZd+XAt7z57yGUZR0PE3mufsU2LQJHumDENtQBmMCvMnGO57qaA+zWz9Ouf56q9M29M2o47kZCTefRKyO6GuRkvt9w== 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=gFjwJKCEU+MXjlGpKmWusO/1Vpgt5u45nxEpq7p/8jE=; b=lS5Mo2plKy+3ca9b3cBtcs4N2+Qx6vYVov3zHg1pBJJA1tdngRUcs1oFIx91SZ6FpEKjpCAd+eZviG9lDotcPLzCrrFAbFgG8RShpDygijVzsO6nqshRYGrLRz/PPIyBddUJI11W4Lwpon9INWBxtrrTJdUgYcOmwuaQ3umJc+NbXhjRXViBHS0TgYOkMBu8XVoWd4FvWXkzwkZsZVrt8F3E0XgVUkuZXLFmXqiodo1YSPow+cPsTPMqLf3i3MrTHkf4nbz3PvqxLxj+GDCiS0HfvP0P/mfQqCumomcukwRiY7KzZhXtyoIA0W5I8tarWAe42oEp4GWuqrzwkrj+4Q== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by DU2P250MB0127.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:270::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7362.33; Sun, 10 Mar 2024 14:12:29 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::228d:8c6f:ed10:82eb]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::228d:8c6f:ed10:82eb%7]) with mapi id 15.20.7362.031; Sun, 10 Mar 2024 14:12:29 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 10 Mar 2024 15:12:16 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 X-TMN: [V4vl4oxnGEGHGYywzu01nDxAiYIjmAoHPW76OOBEfY0=] X-ClientProxiedBy: ZR2P278CA0053.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:53::11) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240310141221.439443-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|DU2P250MB0127:EE_ X-MS-Office365-Filtering-Correlation-Id: d1d4022c-7d72-4e86-a94f-08dc410c1eca X-MS-Exchange-SLBlob-MailProps: 9IecXKUgicDeTSW5Y8+cEPfAZQXqQEI0iKST3DkaQk0R1GL74X5FSL8Isdi4RqJsho+b0nb55WUADUG/jI2vBC2psTo7/JI0AmOEZkggb0tXTQg2pIXMOjR8Jd3W6H7fLeoqskrfU3pkVEHMu5z+wABftCfEam3cXdQudHpp/e+dXb8rmBFIbFR1/AueCNRra6k44kWVjJwBu5je8S9wdZuu3PKTZDqJMiwHvPAbEsnX0anozEuo8LbleKW/JmFHjiRKyBc08szRrIXEaSANjQ6n/q0BvL+G/IXUY8Gzv11yWwfCvThO+nAQ1lD84TfYYs0oAp2EkxAkE1IdRNmQFmmxwRqy7N/ud3siu6MnPXqdLvUfERUgIxviKPRdwQuyCQcal9PrbkzaZDVnvKiAcs6XEoiLEzd9mX3bjAjFHaqA++fLl7vYIMRI0f/+CygWbGev4KomHlxcoaW2Aphyg8l00LJMCg69+eL+LcCf+DWdpptGZNavz3aCUV3xrlOvXygHhmzEkbuC+5wyaWd1ICnAn29t8gsQmqmfcU47fjEQDcWp/tr3q6oOKBKtnZ866SRlhhpBuUeCHUR2hvdMwY1GkwQ9fO2TvI0bfML/qNRmhw5dufSuM3Qu++ttHVspPp67IddijyxdwzIvBNZhs2vWU+scof0p8/fmJlh1E8E6NGfwkg9Cv7Wsgik/QIGlqBMKrbG1iPsZPVQiCfbZ/sH4MWjNHJL+YEd8yQ/jHgXDL+OWF1OZrw== X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: lktrd+TbkeUltqkNbJ3BrCH33VCg1AyuNFLYXXXo1JTprfkQkIYXdfKfd/2XuDYTTegQYSvRsfppCC9XOk+PqjNCNcPTPq0DdSCzvH5OT2SUKV9Yh6vl8+g5adp5zWG4yH3AEA3v3UfEioZ4TVvwwa2HSYM8EWyyFERTaozp29qk0UL2cJMkMTZ4QZgxmsmqfTn+nkHen1Kw+ig3qyQoBz1zMqTxwkhSoIEWmUXmxOiGtrDigaqSDy4FS8+yixVUp6GbgsocNzXm3UiZvmzMGWBS2MZmYed/xEH73i9GDKzJnqOGzG6QxsCMBGdK6vPuyceUXuowp3wzyMtr7/3cD/78M8sIdeTyD0K2YG65BQNJGXW9iBAM6TA3nl5Zlk476hUoOwg0dZwhy8PdR8hSK/oRJf2FPS2b994iYittqULvnv4Od+W0CzI/iRvkEYG12teP5kufGcIJmdpUsAXRLB+I9VZvdBVsNWwIC+sIprTs+GZ77jKzJd/xDK66Pirm1d+uZwSzATLiDTB5ewTtwgUtGKjAZZNtvl1JmRS1NZLyRTZX2xhVwvAEPQEC/vWeN+uqBjAoAYI7AQYzImkpuDbbb637z8cqPNH8brooaNAtxUOU4XBz6qkSHA/lRR7V X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 5cXmBZuzAYpl32JKvFL72R68s6QMJv1OTPZ3PGSN1+ot4pUW/9zdYriJpuRLMF/Nh0ZFCnjg4H64c7jXYJhc9PvvSgGstjcQpVHcS76AEU/5nOfHaJGwdbMNvg4ArgwRQQRo7lqLapgLQ0NjVdSd1j2aebqswpz+2TInaGWMsIRVZOVf9WaTd5JGedUQWpQPNTUwZv6m03z42YomfSqrXdMcpdTCwR688YSvXxcQE4ZuFFpvEw9pqN40dEYYCmpnpMRDsg8wRb673PDH1+5k4ZU/+gqNQnYqc6+DrfW3Msygzwjigvyg7B39LaChGLKgVmLLll/B6OqzEwJIuoPnrbcyC1DyCtEv3sVA+v6dFk/CTCh3/nQZRg8JFswnWgEeuLZZx+urJXtX6O235d1hLU5y9deTehiq9Tyw2NdnCDvLsi5MMBeMDUzC8a1vDkQhddjUKfvCWOPLhSisZINbHxojbza69W6yNFbt5wpZaupim5XVlcZjbFNjQHzunaWoAfhaFeNJxrBVRoJOS1GpcnB316Z618X2eM2FIIDA8DTF7ebJHsUUmMj5n796fRa7BIHZLEU1gI3X/eeqcY/ZaJdxVbNh+eb9JJe7wOADCpyW/ZxLXkKTAGWRwKRz3FWDnBEcPql3LT0aaKCwMVjdcLx/sPhPaxkIqEPgvkWZTGECBuimRXwo47Y9pdxA2Xf+cQC3+PiWJHUCPAaIw2WTYakxvjNBsKFslP9ijqWm29YiuoNKwJr45UD/ZlxjU1mOZmKxhowCF2f5NT+AKnOYaq2DTb3dqNZYE4r2bpg2mI08qyZpUDtCxrrazyg0pxCvHgob6tohV4k0NwO9q4SqVcW2GBJw36Z0MAwWLr3iWL1uDEfk5PdojuOEPGJhJS0BMM5UQuA02jraE/Rih+FXguunphZLXJmv/xuThQUV6bdSnlhVqCcFmx0EZLW9rW3j8U2kuiZg2n8TWTgo8zjNeUDvERSZMasnd3xKE2KgJjnUHyYfG3tzx1cn4uylOKeOGgY2uTd78+vJlzcpyKHtjWGydoYLFBiAzQqoI/0jTwqHvi8WXWj+xNcTVUlGWN/AzJTK6jgEct6fgyf59dbaCLE7xg/cuxqIkcnnvD2bCXq4l3O74RYpNuGoFH1tTX4CTPXaTJ5CuuULsxiMGtaXWKw9qQyUSdWuFoLZU+tzhw/eGeZTmuTVwhYsECpcQ1cnWDY2I2HaVsO55xhsmNX36njOZEDnzoEfUR27KZfP9qfuHNBzBUu2psu14Y+SIfyfFlp22i3CN7zS2G8ugyDHyw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d1d4022c-7d72-4e86-a94f-08dc410c1eca X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Mar 2024 14:12:29.3891 (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: DU2P250MB0127 Subject: [FFmpeg-devel] [PATCH 1/6] avcodec/tiff: Fix handling of av_strdup() failures 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: qXqfvJfE7aAk For unknown geokey values, get_geokey_val() returns "Unknown-%d" with val being used for %d. This string is allocated and therefore all the known geokey values (static strings) are strdup'ed. In case this fails it is either ignored or treated as "Unknown-%d". (Furthermore it is possible to call av_strdup(NULL), although this is not documented to be legal.) This commit changes this by only returning the static strings in get_geokey_val(); the unknown handling and strdup'ing is moved out of it. Signed-off-by: Andreas Rheinhardt --- libavcodec/tiff.c | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/libavcodec/tiff.c b/libavcodec/tiff.c index cb4d378753..4c7460cf41 100644 --- a/libavcodec/tiff.c +++ b/libavcodec/tiff.c @@ -36,6 +36,7 @@ #include #include "libavutil/attributes.h" +#include "libavutil/avstring.h" #include "libavutil/error.h" #include "libavutil/intreadwrite.h" #include "libavutil/opt.h" @@ -179,19 +180,17 @@ static const char *search_keyval(const TiffGeoTagKeyName *keys, int n, int id) return NULL; } -static char *get_geokey_val(int key, int val) +static const char *get_geokey_val(int key, uint16_t val) { - char *ap; - if (val == TIFF_GEO_KEY_UNDEFINED) - return av_strdup("undefined"); + return "undefined"; if (val == TIFF_GEO_KEY_USER_DEFINED) - return av_strdup("User-Defined"); + return "User-Defined"; #define RET_GEOKEY_VAL(TYPE, array)\ if (val >= TIFF_##TYPE##_OFFSET &&\ val - TIFF_##TYPE##_OFFSET < FF_ARRAY_ELEMS(tiff_##array##_codes))\ - return av_strdup(tiff_##array##_codes[val - TIFF_##TYPE##_OFFSET]); + return tiff_##array##_codes[val - TIFF_##TYPE##_OFFSET]; switch (key) { case TIFF_GT_MODEL_TYPE_GEOKEY: @@ -224,13 +223,9 @@ static char *get_geokey_val(int key, int val) RET_GEOKEY_VAL(PRIME_MERIDIAN, prime_meridian); break; case TIFF_PROJECTED_CS_TYPE_GEOKEY: - ap = av_strdup(search_keyval(tiff_proj_cs_type_codes, FF_ARRAY_ELEMS(tiff_proj_cs_type_codes), val)); - if(ap) return ap; - break; + return search_keyval(tiff_proj_cs_type_codes, FF_ARRAY_ELEMS(tiff_proj_cs_type_codes), val); case TIFF_PROJECTION_GEOKEY: - ap = av_strdup(search_keyval(tiff_projection_codes, FF_ARRAY_ELEMS(tiff_projection_codes), val)); - if(ap) return ap; - break; + return search_keyval(tiff_projection_codes, FF_ARRAY_ELEMS(tiff_projection_codes), val); case TIFF_PROJ_COORD_TRANS_GEOKEY: RET_GEOKEY_VAL(COORD_TRANS, coord_trans); break; @@ -241,10 +236,7 @@ static char *get_geokey_val(int key, int val) } - ap = av_malloc(14); - if (ap) - snprintf(ap, 14, "Unknown-%d", val); - return ap; + return NULL; } static char *doubles2str(double *dp, int count, const char *sep) @@ -1634,9 +1626,14 @@ static int tiff_decode_tag(TiffContext *s, AVFrame *frame) s->geotags[i].type = ff_tget_short(&s->gb, s->le); s->geotags[i].count = ff_tget_short(&s->gb, s->le); - if (!s->geotags[i].type) - s->geotags[i].val = get_geokey_val(s->geotags[i].key, ff_tget_short(&s->gb, s->le)); - else + if (!s->geotags[i].type) { + uint16_t val = ff_tget_short(&s->gb, s->le); + const char *str = get_geokey_val(s->geotags[i].key, val); + + s->geotags[i].val = str ? av_strdup(str) : av_asprintf("Unknown-%u", val); + if (!s->geotags[i].val) + return AVERROR(ENOMEM); + } else s->geotags[i].offset = ff_tget_short(&s->gb, s->le); } break;