Repository navigation
Withdraw the central SQLitePCLRaw pins — #1351 fixed this better, and one of mine was a latent CVE regression - #3344
Conversation
… one of mine was a latent CVE regression #3342 (mine, merged) added central PackageVersion pins for the managed SQLitePCLRaw trio. MeshWeaver.Plugins#1351 landed the real fix concurrently, and it is better on both counts it differs by. 1. VERSIONOVERRIDE BESIDE THE REASON, NOT A CENTRAL PIN. Nothing in this repo's src/ consumes SQLitePCLRaw, so a central pin is inert for a pure transitive (measured on #3342 itself: building MeshWeaver.Hosting.Sqlite against that tree still resolved 2.1.11) AND it would force Plugins to move its platform pin before the fix could take effect. #1351 puts the version where the explanation is. 2. 🚨 MY bundle_e_sqlite3 PIN WAS A LATENT CVE REGRESSION. #1351 warns not to raise it "to finish the family", and the restore graph confirms it: SQLitePCLRaw.bundle_e_sqlite3 3.0.2 → SQLitePCLRaw.config.e_sqlite3 3.0.2 → SourceGear.sqlite3 3.50.4.2 ← NOT SQLitePCLRaw.lib.e_sqlite3 The 3.0 bundle swaps the native engine package, so the lib.e_sqlite3 pin that exists for GHSA-2m69-gcr7-jv3q stops being the thing that supplies the engine. Inert today because a bare PackageVersion does not bind a pure transitive — which makes it a loaded gun rather than a live break, and it goes. 🚨 My probe missed it, and the reason is worth recording: it referenced lib.e_sqlite3 3.53.3 EXPLICITLY alongside the bundle, so `sqlite_version()` answered 3.53.3 and the swap was masked. The probe restored BOTH SourceGear.sqlite3 3.50.4.2 and lib.e_sqlite3 3.53.3 — the evidence was in its own assets file and I read only the runtime answer. A control I held by accident, not by design, and it turned a green probe into a wrong conclusion. The comment now carries both the withdrawal and the never-pin-the-bundle rule, so the next person reaching for "finish the family" finds the measurement rather than repeating it. Verified: MeshWeaver.Graph.Contract 0 Error(s) 0 Warning(s) Release -warnaserror. Refs #3328, MeshWeaver.Plugins#1351 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
🟡 Changes recommended
The change removes the CVE-mitigation pin for SQLitePCLRaw.lib.e_sqlite3 while the comment still relies on that pin existing, leaving no enforced patched-engine version.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
This PR backs out the previously added central-package pins for the managed SQLitePCLRaw packages, keeping explanatory context in Directory.Packages.props about why the managed trio should not be centrally pinned and why bundle_e_sqlite3 3.0.x is unsafe.
Changes:
- Removed central
PackageVersionpins for SQLitePCLRaw managed packages previously introduced as part of #3342. - Rewrote the surrounding rationale comment to point at the fix implemented in
MeshWeaver.Plugins(Plugins#1351) and to warn againstbundle_e_sqlite33.0.x.
File summaries
| File | Description |
|---|---|
| Directory.Packages.props | Removes SQLitePCLRaw central pins and updates the inline rationale/warnings around SQLite engine/package selection. |
Review details
- Files reviewed: 1/1 changed files
- Comments generated: 1
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| Deliberately version-AGNOSTIC prose: naming a specific version here goes stale the moment | ||
| the pin below is bumped (it once said 3.50.3 while the pin read 3.53.3). The pin is the | ||
| source of truth; this comment explains WHY it exists. | ||
| Pinned explicitly in the Sqlite projects. | ||
|
|
Test Results (shard 1)475 tests 475 ✅ 31s ⏱️ Results for commit c08fee1. |
Test Results (shard 0)251 tests 251 ✅ 2m 22s ⏱️ Results for commit c08fee1. |
Test Results (shard 3)369 tests 367 ✅ 45s ⏱️ Results for commit c08fee1. |
Test Results (shard 5) 4 files 4 suites 1m 53s ⏱️ Results for commit c08fee1. |
Test Results (shard 4)2 316 tests 2 316 ✅ 2m 26s ⏱️ Results for commit c08fee1. |
Test Results (shard 2)588 tests 396 ✅ 2m 56s ⏱️ Results for commit c08fee1. |
Test Results 15 files 15 suites 10m 55s ⏱️ Results for commit c08fee1. |
|
🚨 This withdrawal took core CD down, and the reason is one reference #1351 did not cover. The reasoning here is right — the version belongs beside the reason, not in a central list this repo
NU1010 for the missing version, then NU1903 because the fallback resolution reintroduced the very ci.7813 and ci.7814 both SKIPPED Fixed forward in Plugins#1361 — Worth recording for next time, because neither repo's CI could see it: a versionless |
Withdrawing my own merged change
#3342 added central
PackageVersionpins for the managed SQLitePCLRaw trio.MeshWeaver.Plugins#1351 landed the real fix concurrently, and it is better on both counts it
differs by. I did not check for a sibling before starting, which is how two people ended up on the
same defect.
1.
VersionOverridebeside the reason beats a central pin#1351 puts
VersionOverride="3.0.2"onSQLitePCLRaw.core/provider.e_sqlite3directly inMeshWeaver.Hosting.Sqlite.csproj, with the argument spelled out there:That is right, and my own PR measured the first half of it: building
MeshWeaver.Hosting.Sqliteagainst the #3342 tree still resolved
2.1.11, because a barePackageVersiondoes not bind a puretransitive. My change was inert and gated on a pin bump; theirs works immediately.
2. 🚨 My
bundle_e_sqlite3pin was a latent CVE regression#1351 warns against raising it "to finish the family". The restore graph confirms it:
The 3.0 bundle swaps the native engine package, so the
lib.e_sqlite3pin that exists forGHSA-2m69-gcr7-jv3q stops being the thing supplying the engine. Inert today for the same
pure-transitive reason — which makes it a loaded gun rather than a live break, and exactly the kind
of thing I objected to leaving in place elsewhere today.
Why my probe missed it, which is the part worth keeping: the probe referenced
lib.e_sqlite3 3.53.3explicitly alongside the bundle, sosqlite_version()answered3.53.3and the swap was masked. Its own
project.assets.jsonrestored bothSourceGear.sqlite3 3.50.4.2andlib.e_sqlite3 3.53.3— the evidence was in the file and I read only the runtimeanswer. A control held by accident rather than by design turns a green probe into a wrong
conclusion.
What lands here
The three pins go. The comment keeps both findings so the next person reaching for "finish the
family" meets the measurement instead of repeating it:
bundle_e_sqlite3to 3.0.x, and why.MeshWeaver.Graph.Contract—0 Error(s) 0 Warning(s), Release,-warnaserror.Refs #3328, MeshWeaver.Plugins#1351