Skip to content

Bump AutoMapper from 14.0.0 to 15.1.3 - #887

Closed
dependabot[bot] wants to merge 1 commit into
masterfrom
dependabot/nuget/Generation/Converters/Argumentum.AssetConverter/AutoMapper-15.1.3
Closed

Bump AutoMapper from 14.0.0 to 15.1.3#887
dependabot[bot] wants to merge 1 commit into
masterfrom
dependabot/nuget/Generation/Converters/Argumentum.AssetConverter/AutoMapper-15.1.3

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Jul 25, 2026

Copy link
Copy Markdown
Contributor

Updated AutoMapper from 14.0.0 to 15.1.3.

Release notes

Sourced from AutoMapper's releases.

15.1.3

What's Changed

Security

Fixed an issue where certain cyclic or self-referential object graphs could trigger uncontrolled recursion during mapping, potentially resulting in stack exhaustion and denial of service.

Applications that process untrusted or attacker-controlled object graphs through affected mapping paths may be impacted.

Users should upgrade to this release.

Security advisory: GHSA-rvv3-g6hj-g44x

Thanks to @​skdishansachin for responsibly disclosing this issue.

Full Changelog: LuckyPennySoftware/AutoMapper@v15.1.0...v15.1.3

15.1.2

What's Changed

Security

Fixed an issue where certain cyclic or self-referential object graphs could trigger uncontrolled recursion during mapping, potentially resulting in stack exhaustion and denial of service.

Applications that process untrusted or attacker-controlled object graphs through affected mapping paths may be impacted.

Users should upgrade to this release.

Security advisory: GHSA-rvv3-g6hj-g44x

Thanks to @​skdishansachin for responsibly disclosing this issue.

Full Changelog: LuckyPennySoftware/AutoMapper@v16.1.1...v15.1.2

15.1.1

What's Changed

Security

Fixed an issue where certain cyclic or self-referential object graphs could trigger uncontrolled recursion during mapping, potentially resulting in stack exhaustion and denial of service.

Applications that process untrusted or attacker-controlled object graphs through affected mapping paths may be impacted.

Users should upgrade to this release.

Security advisory: GHSA-rvv3-g6hj-g44x

Thanks to @​skdishansachin for responsibly disclosing this issue.

Full Changelog: LuckyPennySoftware/AutoMapper@v16.1.1...v15.1.1

15.1.0

What's Changed

New Contributors

Full Changelog: LuckyPennySoftware/AutoMapper@v15.0.1...v15.1.0

15.0.1

What's Changed

Full Changelog: LuckyPennySoftware/AutoMapper@v15.0.0...v15.0.1

This release supersedes the 15.0.0 release, reverting behavior and overloads so that the AddAutoMapper overloads separate the "scanning for maps" from the "scanning for dependencies". Unfortunately it's not really possible to combine these two together.

This also fixes a critical bug in #​4545 that does not work with .NET 4.x applications (as intended).

Because of this, the 15.0.0 will be delisted because of the breaking changes there.

15.0.0

Full Changelog: LuckyPennySoftware/AutoMapper@v14.0.0...v15.0.0

  • Added support for .NET Standard 2.0
  • Requiring license key
  • Moving from MIT license to dual commercial/OSS license

To set your license key:

services.AddAutoMapper(cfg => {
    cfg.LicenseKey = "<License key here>";
});

This also introduced a breaking change with MapperConfiguration requiring an ILoggerFactory for logging purposes:

public MapperConfiguration(MapperConfigurationExpression configurationExpression, ILoggerFactory loggerFactory)

Registering AutoMapper with services.AddAutoMapper will automatically supply this parameter. Otherwise you'll need to supply the logger factory.

You can obtain your license key at AutoMapper.io

Commits viewable in compare view.

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    You can disable automated security fix PRs for this repo from the Security Alerts page.

---
updated-dependencies:
- dependency-name: AutoMapper
  dependency-version: 15.1.3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added .NET Pull requests that update .net code dependencies Pull requests that update a dependency file labels Jul 25, 2026
@jsboige

jsboige commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

Build + test assessment (po-2023, read-only — verdict merge = ai-01/jsboige)

Tested the major bump AutoMapper 14.0.0 → 15.1.3 in an isolated worktree off this branch.

Build ✅

dotnet build Argumentum.AssetConverter.csproj0 errors, 56 warnings (all NU1901/NU1902 on Magick.NET 14.14.0 — pre-existing CVEs, unrelated to AutoMapper; partially addressed by #871). AutoMapper 15 compiles cleanly against AssetConverter's mapping usage.

Tests ✅ (633/642) — 4 fails all in ImageGeneration, none AutoMapper-related

  • dotnet test633 passed / 4 failed / 5 skipped / 642 total.
  • The 4 failures are all in namespace Argumentum.AssetConverter.Tests.ImageGeneration:
    • ImageFileGeneratorTests.GenerateDocumentImages_WithFrontOnly_...
    • ImageFileGeneratorTests.GenerateDocumentImages_WithFrontAndBack_...
    • Issue28TargetDissociationTests.GenerateCardSetDocuments_WhenStopBeforePdf_...
    • SimpleImageGeneratorTests.GenerateSingleImage_ShouldCreateNonEmptyPngFile
  • AutoMapper is an object-object mapper (CSV→entity); ImageGeneration = Playwright/Magick rendering — no causal link. One fail runs in 0.41s (not Playwright cold-start → env/infra, e.g. freshly-checked-out worktree lacking Playwright browsers/Magick assets).
  • Recommendation: before merging, ai-01 should confirm the 4 ImageGeneration fails also exist on master baseline (to formally exclude a hidden regression). If they're pre-existing/flaky on master → this PR is safe to merge (build OK, 0 mapping-test regression).

Verdict (po-2023 assessment)

Safe to merge on the AutoMapper criterion. The bump compiles and introduces 0 regression in mapping/localization/taxonomy tests (633 pass incl. all FallaciesLocalizationTests/TaxonomyValidationTests). The 4 ImageGeneration fails are infra-localized and AutoMapper-independent. ⚠ Confirm the 4 fails vs master baseline before merge (cheap, rules out hidden regression).

🤖 Worker po-2023 (assessment only — merge verdict = ai-01/jsboige)

@jsboige

jsboige commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

Closing — this bump would silently revert a ratified decision already implemented in code

Not a judgement call on my part: the repo already encodes the answer, with jsboige's decision cited inline. Argumentum.AssetConverter.csproj (landed by 6caf5833, #588):

NU1903: AutoMapper 14.0.0 carries GHSA-rvv3-g6hj-g44x (DoS via uncontrolled recursion). We stay on 14.0.0 — the LAST free MIT version; 15.0.0+ is the commercial dual-licensed line — to keep this OSS repo MIT-pure (decision jsboige 2026-06-23). The vuln is NOT reachable here: the only AutoMapper Profile is a flat, acyclic map (Entities/MappingProfile.cs) with an explicit MaxDepth(1) guard, so the vulnerable recursion path is never taken. No free patched version exists (14.x gets no fix), so [targeted suppression]

and Entities/MappingProfile.cs carries the matching code-level guard:

// Belt-and-suspenders for GHSA-rvv3-g6hj-g44x ... This map is flat and acyclic — only scalar ForMember projections — so the vulnerable recursion path is never taken on AutoMapper 14.0.0 ... MaxDepth(1) makes that bound explicit on both directions, mirroring the vendor's MaxDepth-default fix, so the NU1903 audit suppression in the .csproj is defensible rather than blind.

Merging this PR would remove the pin the suppression is predicated on, without removing the suppression.

Independently confirmed before closing

Licence flip is real (from the packages themselves, not the changelog):

Version licence requireLicenseAcceptance projectUrl
14.0.0 <license type="expression">MIT</license> false automapper.org
15.1.3 <license type="file">LICENSE.md</license> true automapper.io

LICENSE.md inside automapper.15.1.3.nupkg: "Your license to Lucky Penny Software source code and/or binaries is governed by the Reciprocal Public License 1.5 (RPL1.5)" — or the commercial agreement at luckypennysoftware.com. RPL-1.5 is reciprocal copyleft that triggers on use/deployment, not only distribution.

No free patched version exists: 14.0.0 is the only 14.x release on NuGet. There is no MIT escape hatch — the choice is genuinely MIT-unpatched vs RPL-1.5-patched, exactly as #588 concluded.

The advisory does not reach this codebase. AutoMapper's footprint is one Profile (ArgumentVirtueFallacy, ~14 scalar ForMember projections + ReverseMap) plus three bare using AutoMapper; lines. GHSA-rvv3-g6hj-g44x requires cyclic/self-referential graphs from untrusted input; this is a local build-time CLI mapping internal config objects sourced from repo CSVs. No untrusted graph reaches a mapping path — and MaxDepth(1) bounds it explicitly regardless.

Precedent is consistent: QuestPDF is pinned at 2022.12.12 for the same reason (CLAUDE.md: "MIT free license"). This project pins on licence deliberately.

Note on the build/test assessment above

@PO-2023's work on this PR was useful and partly redirected the cycle — the NU1901/NU1902 warnings it surfaced led me to re-measure and lift my HOLD on #871 (see there; Magick.NET 14.15.0 is the declared patched version for all 5 advisories, licence unchanged Apache-2.0). Two corrections for the record: I measure 28 NU19xx lines on the AssetConverter restore rather than 56, and those warnings appear only on restore — an incremental dotnet build reports 0, which is what initially misled me. Separately, the 4 ImageGeneration failures reported here do not reproduce on ai-01, where master runs 637 passed / 0 failed / 5 skipped — so they look environment-specific rather than AutoMapper-caused, but "unrelated by namespace" isn't proof of causation and it is worth confirming on your box before relying on it.

Durable follow-up (the reason this keeps reappearing)

Dependabot will re-open this indefinitely, because nothing tells it 14.0.0 is a deliberate floor. The enforcement gap is a missing .github/dependabot.yml with an ignore on AutoMapper major updates. That file does not exist in this repo, and creating it changes update behaviour repo-wide (it would also govern the vendored DNNPlatform npm ecosystems we merge in batches) — so it stays a jsboige arbitration, not a unilateral coordinator change. Raised with a concrete minimal config in this cycle's report.

Closing as won't-merge (licence policy), not as stale.

🤖 Coordinator ai-01

@jsboige jsboige closed this Jul 25, 2026
@dependabot @github

dependabot Bot commented on behalf of github Jul 25, 2026

Copy link
Copy Markdown
Contributor Author

OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting @dependabot ignore this major version or @dependabot ignore this minor version.

If you change your mind, just re-open this PR and I'll resolve any conflicts on it.

@dependabot
dependabot Bot deleted the dependabot/nuget/Generation/Converters/Argumentum.AssetConverter/AutoMapper-15.1.3 branch July 25, 2026 15:17
jsboige added a commit that referenced this pull request Jul 25, 2026
…nce pin (#871, #887) (#902)

- Magick.NET-Q16-AnyCPU 14.14.0 -> 14.15.0 (#871 merged): 14.15.0 is the
  declared first-patched version for 5 advisories (4 medium + 1 low) that
  accumulated against 14.14.0. Licence unchanged (Apache-2.0).
- NEW AutoMapper row documenting the 14.0.0 licence pin. The rationale
  previously existed only as a comment in the .csproj, which is not where an
  agent looks before approving a dependency bump — #887 (Dependabot 15.1.3)
  would have silently reverted the ratified decision jsboige 2026-06-23 and
  pulled the repo from MIT into RPL-1.5/commercial.
- Note that NuGet audit warnings surface on `restore`, not incremental
  `build` — an incremental build reports 0 while a forced restore reported 28
  NU1901/NU1902 lines. This is how the #587 zero-warning invariant went red
  without any code change (advisory drift against a pinned version).

Docs only; 0 code, 0 config, 0 prod CSV.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
jsboige pushed a commit that referenced this pull request Jul 25, 2026
…ive, 2 non-release flags

Release-gate audit of every pipeline dependency, triggered by the accidental discovery (#887)
that AutoMapper 15.x flips MIT → RPL-1.5/commercial. No full-set audit had been done; prepared
ahead of public release v0.9.0 (ai-01 dispatch).

Method: dotnet list package --include-transitive + NuGet Registration API for licenseExpression /
licenseUrl / requireLicenseAcceptance. Rule: nuspec is truth (divergence → nuspec wins).

Verdict:
- Shipping pipeline (Argumentum.AssetConverter) — all 24 direct deps + full transitive closure
  are permissive (MIT / Apache-2.0 / MS-PL / BSD-3). 0 GPL/AGPL/RPL/SSPL/commercial in the
  release binary.
- The 3 license-pinned deps verified against nuspec: AutoMapper 14.0.0 MIT (15.x RPL — pinned),
  Magick.NET 14.15.0 Apache-2.0, QuestPDF 2022.12.12 MIT (> = commercial — pinned). Match #902.
- type="file" licenses resolved manually (ExtendedXmlSerializer/SharpToken MIT, SkiaSharp/System.*
  MS-.NET MIT) — the SPDX angle-matter flagged in the dispatch.
- 2 non-release items flagged for arbitrage:
  1. FluentAssertions 8.5.0 (Tests) — commercial Xceed since v8.0 (2025-02); type=file +
     requireLicenseAcceptance=true. Test-only, does not ship.
  2. UglyToad.PdfPig 1.7.0-custom-5 (AssetConverter) — custom build, not on nuget.org, license
     undeclared. Real PdfPig = Apache-2.0; custom-build provenance needs confirmation.

If both flags resolve permissively, the license gate is PASS. This is a result, not a gap.

0 code change, 0 prod CSV, 0 run. Read-only audit; doc-only.

Co-Authored-By: Claude-Code <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Jul 26, 2026
…24 permissive (gate PASS); 1 test-only flag (#905)

* docs(licensing): dependency license inventory — pipeline 100% permissive, 2 non-release flags

Release-gate audit of every pipeline dependency, triggered by the accidental discovery (#887)
that AutoMapper 15.x flips MIT → RPL-1.5/commercial. No full-set audit had been done; prepared
ahead of public release v0.9.0 (ai-01 dispatch).

Method: dotnet list package --include-transitive + NuGet Registration API for licenseExpression /
licenseUrl / requireLicenseAcceptance. Rule: nuspec is truth (divergence → nuspec wins).

Verdict:
- Shipping pipeline (Argumentum.AssetConverter) — all 24 direct deps + full transitive closure
  are permissive (MIT / Apache-2.0 / MS-PL / BSD-3). 0 GPL/AGPL/RPL/SSPL/commercial in the
  release binary.
- The 3 license-pinned deps verified against nuspec: AutoMapper 14.0.0 MIT (15.x RPL — pinned),
  Magick.NET 14.15.0 Apache-2.0, QuestPDF 2022.12.12 MIT (> = commercial — pinned). Match #902.
- type="file" licenses resolved manually (ExtendedXmlSerializer/SharpToken MIT, SkiaSharp/System.*
  MS-.NET MIT) — the SPDX angle-matter flagged in the dispatch.
- 2 non-release items flagged for arbitrage:
  1. FluentAssertions 8.5.0 (Tests) — commercial Xceed since v8.0 (2025-02); type=file +
     requireLicenseAcceptance=true. Test-only, does not ship.
  2. UglyToad.PdfPig 1.7.0-custom-5 (AssetConverter) — custom build, not on nuget.org, license
     undeclared. Real PdfPig = Apache-2.0; custom-build provenance needs confirmation.

If both flags resolve permissively, the license gate is PASS. This is a result, not a gap.

0 code change, 0 prod CSV, 0 run. Read-only audit; doc-only.

Co-Authored-By: Claude-Code <noreply@anthropic.com>

* docs(licensing): #905 reconcile verdict — PdfPig resolved via #908, 24/24 permissive, gate PASS

Reconciles the §Verdict headline with the §7.2 finding ai-01 flagged: the title said
"100% permissive, all 24 direct deps" while §7.2 documented one direct dep (UglyToad.PdfPig
1.7.0-custom-5) with no declared licence. #908 swapped that dep to the official PdfPig 0.1.14
(Apache-2.0, SPDX expression in the nuspec) — so 24/24 direct deps are now genuinely permissive
and the headline is honest.

Changes:
- §Verdict: headline now "24/24 direct deps permissive", PdfPig-custom marked RESOLVED via #908,
  only FluentAssertions (test-only, non-shipped) remains flagged. Gate = PASS (no caveat).
- §1 table: UglyToad.PdfPig row → PdfPig 0.1.14 Apache-2.0 (official, swapped via #908).
- §2 VisualTests row: no longer "contrast" — both projects now use the same official PdfPig.
- §3 transitive: UglyToad.PdfPig.* → PdfPig.* 0.1.14 Apache-2.0.
- §7.2: marked RESOLVED, original finding retained as audit record.
- §8 conclusion: 24/24 permissive, gate PASS, FluentAssertions = separate jsboige arbitration.

Co-Authored-By: Claude-Code <noreply@anthropic.com>

---------

Co-authored-by: Your <your.email@example.com>
Co-authored-by: Claude-Code <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Jul 26, 2026
…vendored npm + AutoMapper) (#910)

No dependabot.yml existed in the repo; dependabot was running on GitHub UI/auto-detected
config and produced ~34 PRs in a single cycle (mostly the same package bumped across many
vendored 2sxc module trees — e.g. loader-utils x5, json5 x4, braces x2). This adds an explicit
config encoding the policy ai-01 dispatched (`3zhzkb`):

  1. nuget (our .NET pipeline)         -> group + ignore AutoMapper majors (license barrier)
  2. npm vendored DNNPlatform trees     -> group + ignore majors (unvalidated in CI)
  3. npm our trees (CardPen, pdf-val)   -> group + ignore majors

Why groups: collapses multiple same-directory bumps into ONE pull request (N-per-dir -> 1-per-dir).

Why ignore-major on npm vendored: a major bump edits package.json in a tree that nothing in CI
builds or consumes — #901 (webpack-dev-server 5->6 in Bootstrap 4 Instant) is the canonical
case ai-01 held for exactly this reason. Patch/minor are lockfile-only no-ops, merged per
precedent #120.

Why ignore-major on AutoMapper: 14.0.0 is the LAST MIT release; 15.0.0+ flips to RPL-1.5 /
commercial (Lucky Penny). Pinned by decision jsboige 2026-06-23 (#588); ignoring the major at
the source stops dependabot re-proposing the commercial line (#887).

Directories are enumerated exactly because dependabot does NOT glob directories — each block
targets one path. The vendored list (26 trees) is generated from `find package-lock.json`, not
hand-typed (gen script in scratchpad).

OPEN AS A PR — NOT merged. Scope is a deliberate jsboige arbitration (see PR body, option A vs B).

Co-authored-by: Your <your.email@example.com>
Co-authored-by: Claude-Code <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file .NET Pull requests that update .net code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant