Skip to content

refactor(makernotes): delete fabricated Qualcomm MakerNote table - #345

Merged
swackhamer merged 1 commit into
mainfrom
claude/elated-cohen-b591a7
Aug 1, 2026
Merged

refactor(makernotes): delete fabricated Qualcomm MakerNote table#345
swackhamer merged 1 commit into
mainfrom
claude/elated-cohen-b591a7

Conversation

@swackhamer

Copy link
Copy Markdown
Collaborator

Summary

  • Deletes src/parsers/tiff/makernotes/registries/qualcomm.rs and its consumer src/parsers/tiff/makernotes/qualcomm.rs — a fabricated Qualcomm TIFF-MakerNote tag table with no ExifTool source.
  • Image::ExifTool::Qualcomm has exactly two tables (Main, DualCamera), both string-id-keyed and reached only from JPEG APP7/APP4 segments via JPEG.pm Condition magic-string matches. MakerNotes.pm has zero references to Qualcomm — ExifTool has no TIFF-IFD MakerNote path for this vendor at all.
  • oxidex's deleted registry instead dispatched off 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).
  • Same fabricated-table fingerprint as the leica registry deleted earlier — dense sequential ids, normalized spelling, mirror tests that only assert the table's own invented contents (so they pass regardless of correctness).
  • Removes the dispatcher's "qualcomm" match arm and both pub mod qualcomm; declarations, with comments explaining the omission (matching the existing leica/sigma precedent in the same files).
  • Regenerated api/oxidex.h via just cbindgen to drop the removed QUALCOMM_* constants.

Verification

  • No sample under /tmp/oxidex-exiftool-cache/combined-samples is named or tagged Qualcomm.
  • grep -rla "ClearSight\|ChromaFlash\|OptiZoom" over the ExifTool checkout returns zero files.
  • cargo build --lib and cargo test --workspace --lib are clean after removal.
  • Does not touch 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 --lib
  • cargo test --workspace --lib
  • cargo fmt --all -- --check

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
swackhamer force-pushed the claude/elated-cohen-b591a7 branch from f21c47d to c3037d7 Compare August 1, 2026 20:50
@swackhamer
swackhamer merged commit cdc643f into main Aug 1, 2026
6 checks passed
@swackhamer
swackhamer deleted the claude/elated-cohen-b591a7 branch August 1, 2026 20:59
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant