refactor(makernotes): delete fabricated Qualcomm MakerNote table - #345
Merged
Conversation
Image::ExifTool::Qualcomm has exactly two tables (Main, DualCamera), both string-id-keyed and reached only from JPEG APP7/APP4 segments (JPEG.pm Condition on "Qualcomm Camera Attributes" / "Qualcomm Dual Camera Attributes" magic). There is no Qualcomm entry anywhere in MakerNotes.pm -- ExifTool has no TIFF-IFD MakerNote path for this vendor at all. oxidex's registry instead keyed a Make="Qualcomm" TIFF MakerNote IFD with dense sequential numeric ids (0x0001, 0x0002, 0x0004, 0x0007...) and invented names (ClearSight, ChromaFlash, OptiZoom, ...) that appear in zero ExifTool source files. Classic fabricated-table fingerprint, same class as the leica registry deleted earlier (see the comment left in registries/mod.rs). Mirror tests in the deleted files only asserted the table's own invented contents, so a green suite never caught it. Confirmed no corpus sample carries a Qualcomm-named MakerNote and no other code references the deleted symbols; `cargo build --lib` and `cargo test --workspace --lib` are clean after removal. api/oxidex.h regenerated via `just cbindgen`. Does not touch parsers/jpeg/app_segments/qualcomm.rs or qualcomm_tables.rs, the real ExifTool-verified APP7 reader from #338.
swackhamer
force-pushed
the
claude/elated-cohen-b591a7
branch
from
August 1, 2026 20:50
f21c47d to
c3037d7
Compare
This was referenced Aug 2, 2026
swackhamer
added a commit
that referenced
this pull request
Aug 2, 2026
src/parsers/tiff/makernotes/microsoft.rs + registries/microsoft.rs registered a numeric TIFF-IFD MakerNote table for Make="Microsoft" / "Microsoft Corporation" and emitted AutoHDR, CreativeEffect, DynamicFlash, LensType, OpticalStabilization, PanoramaMode, PureViewMode, Refocus, RichCapture, RichCaptureMode, RichRecordingAudio, Video4K under the Microsoft: group. None of these names appear in any ExifTool 13.59 source file (verified with grep -r "Name => '<TagName>'" against the full lib/ tree). ExifTool's MakerNotes.pm has no MakerNoteMicrosoft dispatch entry at all -- there is no TIFF-IFD MakerNote path for Microsoft in ExifTool. Microsoft.pm's only MakerNotes-group table is Microsoft::Stitch, which is binary data read from EXIF tag 0x4748 (not a MakerNote IFD), with real tags PanoramicStitchVersion, PanoramicStitchCameraMotion, PanoramicStitchMapType -- none of which the deleted parser implemented. Follows the Qualcomm precedent (cdc643f, #345): delete both the parser and its registry plus the integration test, drop the `pub mod microsoft` declarations and dispatcher arm, and leave explanatory comments in their place. microsoft.rs did expose cbindgen FFI constants (MICROSOFT_RICH_CAPTURE etc.), so api/oxidex.h is regenerated via `just cbindgen`, removing 75 now-dead lines. Confirmed no other code references the deleted symbols; cargo build, cargo test --workspace --lib, cargo fmt, and cargo clippy are all clean.
swackhamer
added a commit
that referenced
this pull request
Aug 2, 2026
src/parsers/tiff/makernotes/google.rs registered a numeric TIFF-IFD MakerNote table for Make="Google" and emitted Astrophotography, ColorPop, FaceRetouching, HDRPlusMode, MergedFrameCount, NightSight, NightSightExposureTime, SceneDetection, SuperResZoom under the Google: group. None of these names appear in any ExifTool 13.59 source file (verified with grep -r "Name => '<TagName>'" against the full lib/ tree). ExifTool's only Google MakerNote table is Google::HDRPlusMakerNote, which is not a numeric TIFF IFD at all: it's string-ID keyed (e.g. '1-1', '9-36-1') and decodes a base64+encrypted+gzipped protobuf blob. Its real tags (ImageName, ImageData, TimeLogText, SummaryText, FrameCount, CreateDate) are not implemented by the deleted parser either -- this was a structurally wrong, 100% invented table, not a wrong-id bug. Follows the Qualcomm precedent (cdc643f, #345): delete the parser and its integration test, drop the `pub mod google` declaration and dispatcher arm, and leave an explanatory comment in their place. Confirmed no other code references the deleted symbols; cargo build, cargo test --workspace --lib, cargo fmt, and cargo clippy are all clean. google.rs exposed no cbindgen FFI symbols, so api/oxidex.h is unaffected.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
src/parsers/tiff/makernotes/registries/qualcomm.rsand its consumersrc/parsers/tiff/makernotes/qualcomm.rs— a fabricated Qualcomm TIFF-MakerNote tag table with no ExifTool source.Image::ExifTool::Qualcommhas exactly two tables (Main,DualCamera), both string-id-keyed and reached only from JPEG APP7/APP4 segments viaJPEG.pmConditionmagic-string matches.MakerNotes.pmhas zero references to Qualcomm — ExifTool has no TIFF-IFD MakerNote path for this vendor at all.Make == "qualcomm"in a TIFF MakerNote IFD, with dense sequential numeric ids (0x0001, 0x0002, 0x0004, 0x0007, ...) and invented tag names (ClearSight,ChromaFlash,OptiZoom, ...) that appear in zero ExifTool source files (verified via grep over the ExifTool checkout).leicaregistry deleted earlier — dense sequential ids, normalized spelling, mirror tests that only assert the table's own invented contents (so they pass regardless of correctness)."qualcomm"match arm and bothpub mod qualcomm;declarations, with comments explaining the omission (matching the existingleica/sigmaprecedent in the same files).api/oxidex.hviajust cbindgento drop the removedQUALCOMM_*constants.Verification
/tmp/oxidex-exiftool-cache/combined-samplesis named or tagged Qualcomm.grep -rla "ClearSight\|ChromaFlash\|OptiZoom"over the ExifTool checkout returns zero files.cargo build --libandcargo test --workspace --libare clean after removal.src/parsers/jpeg/app_segments/qualcomm.rs/qualcomm_tables.rs— the real, ExifTool-verified APP7 reader landed in feat(qualcomm): read the APP7 Camera Attributes segment + ExifTool table coverage map #338, which is a different code path (JPEG APP7 segment, not TIFF MakerNote IFD).Test plan
cargo build --libcargo test --workspace --libcargo fmt --all -- --check