From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 62E0D493B5 for ; Sun, 10 Mar 2024 14:12:37 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 81E7A68CD3F; Sun, 10 Mar 2024 16:12:36 +0200 (EET) 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: =?us-ascii?Q?5cXmBZuzAYpl32JKvFL72R68s6QMJv1OTPZ3PGSN1+ot4pUW/9zdYriJpuRL?= =?us-ascii?Q?MF/Nh0ZFCnjg4H64c7jXYJhc9PvvSgGstjcQpVHcS76AEU/5nOfHaJGwdbMN?= =?us-ascii?Q?vg4ArgwRQQRo7lqLapgLQ0NjVdSd1j2aebqswpz+2TInaGWMsIRVZOVf9WaT?= =?us-ascii?Q?d5JGedUQWpQPNTUwZv6m03z42YomfSqrXdMcpdTCwR688YSvXxcQE4ZuFFpv?= =?us-ascii?Q?Ew9pqN40dEYYCmpnpMRDsg8wRb673PDH1+5k4ZU/+gqNQnYqc6+DrfW3Msyg?= =?us-ascii?Q?zwjigvyg7B39LaChGLKgVmLLll/B6OqzEwJIuoPnrbcyC1DyCtEv3sVA+v6d?= =?us-ascii?Q?Fk/CTCh3/nQZRg8JFswnWgEeuLZZx+urJXtX6O235d1hLU5y9deTehiq9Tyw?= =?us-ascii?Q?2NdnCDvLsi5MMBeMDUzC8a1vDkQhddjUKfvCWOPLhSisZINbHxojbza69W6y?= =?us-ascii?Q?NFbt5wpZaupim5XVlcZjbFNjQHzunaWoAfhaFeNJxrBVRoJOS1GpcnB316Z6?= =?us-ascii?Q?18X2eM2FIIDA8DTF7ebJHsUUmMj5n796fRa7BIHZLEU1gI3X/eeqcY/ZaJdx?= =?us-ascii?Q?VbNh+eb9JJe7wOADCpyW/ZxLXkKTAGWRwKRz3FWDnBEcPql3LT0aaKCwMVjd?= =?us-ascii?Q?cLx/sPhPaxkIqEPgvkWZTGECBuimRXwo47Y9pdxA2Xf+cQC3+PiWJHUCPAaI?= =?us-ascii?Q?w2WTYakxvjNBsKFslP9ijqWm29YiuoNKwJr45UD/ZlxjU1mOZmKxhowCF2f5?= =?us-ascii?Q?NT+AKnOYaq2DTb3dqNZYE4r2bpg2mI08qyZpUDtCxrrazyg0pxCvHgob6toh?= =?us-ascii?Q?V4k0NwO9q4SqVcW2GBJw36Z0MAwWLr3iWL1uDEfk5PdojuOEPGJhJS0BMM5U?= =?us-ascii?Q?QuA02jraE/Rih+FXguunphZLXJmv/xuThQUV6bdSnlhVqCcFmx0EZLW9rW3j?= =?us-ascii?Q?8U2kuiZg2n8TWTgo8zjNeUDvERSZMasnd3xKE2KgJjnUHyYfG3tzx1cn4uyl?= =?us-ascii?Q?OKeOGgY2uTd78+vJlzcpyKHtjWGydoYLFBiAzQqoI/0jTwqHvi8WXWj+xNcT?= =?us-ascii?Q?VUlGWN/AzJTK6jgEct6fgyf59dbaCLE7xg/cuxqIkcnnvD2bCXq4l3O74RYp?= =?us-ascii?Q?NuGoFH1tTX4CTPXaTJ5CuuULsxiMGtaXWKw9qQyUSdWuFoLZU+tzhw/eGeZT?= =?us-ascii?Q?muTVwhYsECpcQ1cnWDY2I2HaVsO55xhsmNX36njOZEDnzoEfUR27KZfP9qfu?= =?us-ascii?Q?HNBzBUu2psu14Y+SIfyfFlp22i3CN7zS2G8ugyDHyw=3D=3D?= 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: 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; -- 2.40.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".