From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 9D49C4B6C0 for ; Thu, 25 Sep 2025 00:43:37 +0000 (UTC) Authentication-Results: ffbox; dkim=fail (body hash mismatch (got b'YU1wV/um8cmBrilb8nebzhjisePDMikNsUmSgxz/kY0=', expected b'/KM5xgc2cCusl/E0KFX2Xo0JzRw00Vtn0O3/e9TzbMs=')) header.d=ffmpeg.org header.i=@ffmpeg.org header.a=rsa-sha256 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1758761001; h=mime-version : to : date : message-id : reply-to : subject : list-id : list-archive : list-archive : list-help : list-owner : list-post : list-subscribe : list-unsubscribe : from : cc : content-type : content-transfer-encoding : from; bh=YU1wV/um8cmBrilb8nebzhjisePDMikNsUmSgxz/kY0=; b=NAsz6eeZO11h9xU4Le/8n7uiLo4eUtLeY9XKTBLJdgIJoe2W9/DR3TeCZEdfEvXqarCNq aYjIVs3vazIy69X6GAO2WdZIhfdeJrQXOb/S3evXRXSshJJn8cJjRuz5CAQlY4/nZNHgoJx i8KgoITm/6J1AU0zkLrB/kyWGLc171oAcae+pySlp1Dsrl7XnErsQg0CG/mURFqpPWpA6Qx RSWW2YqGPXbALxGzkc/uDIY6jbRZvjA1N8AwDgcRIE6Np4H3q9Botl1IZWYTuWp2yTs3BSS j0nrYDlHJ2bVRsDlCcrP5y5KqQog85GNnZVnK2qKLosTbfNIEZqNDOy7C2QA== Received: from [172.19.0.4] (unknown [172.19.0.4]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id F188D68ED00; Thu, 25 Sep 2025 03:43:20 +0300 (EEST) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=ffmpeg.org; s=arc; t=1758760997; b=TF+nUPbLTmo6B8hfVbPvq74rCAOrFSUfsV6TT5U3q32UF5gho11lTORwjDohSsWeo/c3z A913RKplDSCVIxyGv2AOcGy0w2N00WVAwrbYaFgjHovSMCw1ZXMfFS1PSNhwC2CGM4ti7x9 mAnIbn/hCCRsgnZzduUDVg4WT32U3kZ8JWlR2gsi6bRPHEV28v+YaKsjv8ScZJAKdlQZcVW R4XNxZQyEhfTlxHJBmyIm0RIdnZ9dHI7004l5RwnmmVZhKd69ZgD53Z4lQt6zq3TEWQHYQ8 p6FnCjOErYqyUlCPxl7tDuGc/LwlrIbAaplM1gmk0TJ6Y459qG89RH53dIHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=ffmpeg.org; s=arc; t=1758760997; h=from : sender : reply-to : subject : date : message-id : to : cc : mime-version : content-type : content-transfer-encoding : content-id : content-description : resent-date : resent-from : resent-sender : resent-to : resent-cc : resent-message-id : in-reply-to : references : list-id : list-help : list-unsubscribe : list-subscribe : list-post : list-owner : list-archive; bh=2eb6grgjQzEGAQ2irxNKCe7AeuViUg++4HOroKUxFqk=; b=Y/lSOXkkIieP3I+mYOBJXo3SxZu8dZLQ89Hk2hxjwoOvGkeURgrzEf8euXN09S1NxAAdB FD4KsUbiYyYop8iJcNVbvEPswfsTl+F0dlDSZXKPvEaJl4omz3LFVcNFypeewq34ZKJ4P11 6vQ1No+TJky3yqkjuoOwmwT/5A4cS8sbw2aRT9gkWz0vNL5Qy194bUtyGan5RNG4QBif/4W PqUg1ruSQHc0h2ZFWbdRlNPgEqvo+p1E1HvLEkPxNlgfhTJTkA8f655DT+16q20xlBpQhC7 4UHi+w7dzEHtZCC2rFLOSQaTcB2MdpVcbuc82QdYgTNryhtbKnxo5g/cG7+g== ARC-Authentication-Results: i=1; ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none; dmarc=pass header.from=ffmpeg.org policy.dmarc=quarantine Authentication-Results: ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none (Message is not ARC signed); dmarc=pass (Used From Domain Record) header.from=ffmpeg.org policy.dmarc=quarantine DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1758760990; h=content-type : mime-version : content-transfer-encoding : from : to : reply-to : subject : date : from; bh=/KM5xgc2cCusl/E0KFX2Xo0JzRw00Vtn0O3/e9TzbMs=; b=CxfycZfzJ8l+ymt3pF/lBMCGAi4dXtEwy1e57iH5V9Cqr/AxlX+ByN/XjgLkFB3ROrLbQ /d7DEKvVvuS5f2nzBGb9hMqjOx4Fh983zhdAevFQonbjNXROiuExtHo8Z+bkawxe7OY4/6t QyqOipYvBggIIzV8ei6DkyeNHfe7W0xH3SCVe5tD8vrZyi2FGoIe0uTCmSFAoD4KRazxHuW qaXOcMgUIMc6+b23BeqSixyRrEu6c/GCxkFOqzsI6uyh6kjA6j0LEizg+Cs7TNnnOqToUnu BB2PMWMtY+ZccncFvFnkJ2MfQ/zMnJpIkCNl+zWBJZpZpBEu/MsU2O+0sZXQ== Received: from ed19c606a818 (code.ffmpeg.org [188.245.149.3]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id E5E2368ECFB for ; Thu, 25 Sep 2025 03:43:09 +0300 (EEST) MIME-Version: 1.0 To: ffmpeg-devel@ffmpeg.org Date: Thu, 25 Sep 2025 00:43:09 -0000 Message-ID: <175876099009.25.10892206154202637793@bf249f23a2c8> Message-ID-Hash: XLDDYNFHGGOUCWZWY6JVMGAJTXVFH273 X-Message-ID-Hash: XLDDYNFHGGOUCWZWY6JVMGAJTXVFH273 X-MailFrom: code@ffmpeg.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-ffmpeg-devel.ffmpeg.org-0; header-match-ffmpeg-devel.ffmpeg.org-1; header-match-ffmpeg-devel.ffmpeg.org-2; header-match-ffmpeg-devel.ffmpeg.org-3; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list Reply-To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH] avcodec/exif: avoid printing errors for makernote non-IFD parsing (PR #20604) List-Id: FFmpeg development discussions and patches Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Leo Izen via ffmpeg-devel Cc: Leo Izen Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Archived-At: List-Archive: List-Post: PR #20604 opened by Leo Izen (Traneptora) URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20604 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20604.patch When we parse a MakerNote, we first try to parse it as an IFD and if that fails, we try to re-parse it as a binary blob. This is because MakerNote is not well-documented in its nature. However, if we fail to parse it the first time, we should not av_log error messages about the parse failure, so instead we log these as AV_LOG_DEBUG. Signed-off-by: Leo Izen Reported-by: Ramiro Polla >>From 5af5f6d7c3253bf51a70645872d1dcc8b5e87d72 Mon Sep 17 00:00:00 2001 From: Leo Izen Date: Wed, 24 Sep 2025 20:34:26 -0400 Subject: [PATCH] avcodec/exif: avoid printing errors for makernote non-IFD parsing When we parse a MakerNote, we first try to parse it as an IFD and if that fails, we try to re-parse it as a binary blob. This is because MakerNote is not well-documented in its nature. However, if we fail to parse it the first time, we should not av_log error messages about the parse failure, so instead we log these as AV_LOG_DEBUG. Signed-off-by: Leo Izen Reported-by: Ramiro Polla --- libavcodec/exif.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/libavcodec/exif.c b/libavcodec/exif.c index e7aa9b8d8f..877dead0fb 100644 --- a/libavcodec/exif.c +++ b/libavcodec/exif.c @@ -453,7 +453,7 @@ static int exif_get_makernote_offset(GetByteContext *gb) } static int exif_parse_ifd_list(void *logctx, GetByteContext *gb, int le, - int depth, AVExifMetadata *ifd); + int depth, AVExifMetadata *ifd, int makernote); static int exif_decode_tag(void *logctx, GetByteContext *gb, int le, int depth, AVExifEntry *entry) @@ -504,7 +504,7 @@ static int exif_decode_tag(void *logctx, GetByteContext *gb, int le, return AVERROR(ENOMEM); bytestream2_get_buffer(gb, entry->ifd_lead, entry->ifd_offset); } - ret = exif_parse_ifd_list(logctx, gb, le, depth + 1, &entry->value.ifd); + ret = exif_parse_ifd_list(logctx, gb, le, depth + 1, &entry->value.ifd, entry->id == MAKERNOTE_TAG); if (ret < 0 && entry->id == MAKERNOTE_TAG) { /* * we guessed that MakerNote was an IFD @@ -532,7 +532,7 @@ end: } static int exif_parse_ifd_list(void *logctx, GetByteContext *gb, int le, - int depth, AVExifMetadata *ifd) + int depth, AVExifMetadata *ifd, int makernote) { uint32_t entries; size_t required_size; @@ -541,18 +541,21 @@ static int exif_parse_ifd_list(void *logctx, GetByteContext *gb, int le, av_log(logctx, AV_LOG_DEBUG, "parsing IFD list at offset: %d\n", bytestream2_tell(gb)); if (bytestream2_get_bytes_left(gb) < 2) { - av_log(logctx, AV_LOG_ERROR, "not enough bytes remaining in EXIF buffer: 2 required\n"); + av_log(logctx, makernote ? AV_LOG_DEBUG : AV_LOG_ERROR, + "not enough bytes remaining in EXIF buffer: 2 required\n"); return AVERROR_INVALIDDATA; } entries = ff_tget_short(gb, le); if (bytestream2_get_bytes_left(gb) < entries * BASE_TAG_SIZE) { - av_log(logctx, AV_LOG_ERROR, "not enough bytes remaining in EXIF buffer. entries: %" PRIu32 "\n", entries); + av_log(logctx, makernote ? AV_LOG_DEBUG : AV_LOG_ERROR, + "not enough bytes remaining in EXIF buffer. entries: %" PRIu32 "\n", entries); return AVERROR_INVALIDDATA; } if (entries > 4096) { /* that is a lot of entries, probably an error */ - av_log(logctx, AV_LOG_ERROR, "too many entries: %" PRIu32 "\n", entries); + av_log(logctx, makernote ? AV_LOG_DEBUG : AV_LOG_ERROR, + "too many entries: %" PRIu32 "\n", entries); return AVERROR_INVALIDDATA; } @@ -811,7 +814,7 @@ int av_exif_parse_buffer(void *logctx, const uint8_t *buf, size_t size, * parse IFD0 here. If the return value is positive that tells us * there is subimage metadata, but we don't parse that IFD here */ - ret = exif_parse_ifd_list(logctx, &gbytes, le, 0, ifd); + ret = exif_parse_ifd_list(logctx, &gbytes, le, 0, ifd, 0); if (ret < 0) { av_exif_free(ifd); av_log(logctx, AV_LOG_ERROR, "error decoding EXIF data: %s\n", av_err2str(ret)); @@ -924,7 +927,7 @@ int avpriv_exif_decode_ifd(void *logctx, const uint8_t *buf, int size, GetByteContext gb; int ret; bytestream2_init(&gb, buf, size); - ret = exif_parse_ifd_list(logctx, &gb, le, depth, &ifd); + ret = exif_parse_ifd_list(logctx, &gb, le, depth, &ifd, 0); if (ret < 0) return ret; ret = av_exif_ifd_to_dict(logctx, &ifd, metadata); -- 2.49.1 _______________________________________________ ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org