Test: regression for signed->unsigned SeamlessIndicator conversion (#1342, #1343)#1345
Conversation
…1342, #1343) Adds a CTest script regression that replays the two fuzz PoCs (negative SeamlessIndicator) through iccFromXml and fails if the signed->unsigned implicit conversion in CIccTagXmlEmbeddedHeightImage::ParseXml (#1342) or CIccTagXmlEmbeddedNormalImage::ParseXml (#1343) reappears. The check is only meaningful under a build instrumented with the integer / implicit-conversion sanitizer (ci-iccdev-tool-tests builds with ENABLE_UBSAN=ON ENABLE_INTEGER_SANITIZER=ON, which adds -fno-sanitize-recover=integer). The script inspects the build's CMakeCache.txt and skips cleanly on a non-sanitizer build rather than report a misleading pass. The pass/fail signal is the absence of the UBSan "runtime error: implicit conversion" line, not the tool exit code (the trigger profiles are intentionally invalid). Verified: FAILS pre-fix (both sites, exit 2), PASSES post-fix, SKIPS on a plain ASan-only build. Pairs with the fix PR for #1342/#1343; this test stays red until that fix lands. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
xsscx
left a comment
There was a problem hiding this comment.
shellcheck
In .github/scripts/iccdev-issue-1342-1343-imageparse-signed-unsigned-regression.sh line 84:
local log="$OUTDIR/$(basename "$xml").log"
^-^ SC2155 (warning): Declare and assign separately to avoid masking return values.
For more information:
https://www.shellcheck.net/wiki/SC2155 -- Declare and assign separately to ...
[FAIL] shellcheck
Declare `log` and assign it separately so the $(basename ...) subshell exit status is not masked by `local` (shellcheck SC2155). No behavior change -- the variable holds the same per-PoC log path. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Fixed the shellcheck SC2155 in The remaining |
xsscx
left a comment
There was a problem hiding this comment.
2026-06-14 20:00:40 UTC
Auto-Merge is On.
|
@xsscx status on the one remaining red check ( This is expected red-by-design and is not yet stale — unlike #1340/#1341, the paired fix here (#1344) has not been merged yet. The regression deliberately fails while master still contains the signed→unsigned Sequence to green:
(The earlier shellcheck SC2155 failure is already fixed in |
…eparse-signed-unsigned-regression
Merge Conflict |
…eparse-signed-unsigned-regression # Conflicts: # Build/Cmake/Testing/CMakeLists.txt
Summary
Deterministic CTest regression for #1342 and #1343 — the signed→unsigned
SeamlessIndicatorconversion in the Embedded Height/Normal image XML parsers. Pairs with fix PR #1344.Replays the two fuzz PoCs (negative
SeamlessIndicator) throughiccFromXmland fails if the UBSanimplicit-integer-sign-changefinding reappears atCIccTagXmlEmbeddedHeightImage::ParseXml(#1342) orCIccTagXmlEmbeddedNormalImage::ParseXml(#1343).What's added
.github/scripts/iccdev-issue-1342-1343-imageparse-signed-unsigned-regression.sh.github/ci/test-data/ub-heightimage-parsexml-1342.xmlandub-normalimage-parsexml-1343.xml(the committed trigger PoCs)iccdev.issue-1342-1343-imageparse-signed-unsigned-regression(labelubsan)How it signals
The check is only meaningful under a build instrumented with the integer / implicit-conversion sanitizer.
ci-iccdev-tool-testsbuilds withENABLE_UBSAN=ON ENABLE_INTEGER_SANITIZER=ON(which adds-fno-sanitize-recover=integer), so pre-fix the conversion aborts the parse. The script inspects the build'sCMakeCache.txtand skips cleanly on a non-sanitizer build rather than report a misleading pass. The pass/fail signal is the absence of theruntime error: implicit conversionline — not the tool exit code (the trigger profiles are intentionally invalid, soiccFromXmlexits non-zero either way).Verification
ctest -R 1342-1343→ 1/1 passed)Merge order
This test is red until #1344 (the fix) lands — same convention as prior fix/test splits. Merge #1344 first, then this.
🤖 Generated with Claude Code