Skip to content

feat(catalog): export decodeManifest — shared validation for DSO and static plugins#156

Merged
facontidavide merged 1 commit into
mainfrom
feat/export-manifest-decoder
Jul 19, 2026
Merged

feat(catalog): export decodeManifest — shared validation for DSO and static plugins#156
facontidavide merged 1 commit into
mainfrom
feat/export-manifest-decoder

Conversation

@facontidavide

Copy link
Copy Markdown
Contributor

Extracts the manifest decoder from DSO discovery's private implementation into the pj_plugins/host/plugin_catalog.hpp API, so a host registering statically linked plugins (PJ4's PluginRuntimeCatalog::registerStaticPlugins) applies the exact validation the DSO path applies — required non-empty id/name/version, typed-field rejection, and the message-parser encoding requirement — instead of re-implementing a weaker decoder.

Found by two independent reviews of PJ4's static-plugin extraction converging on the same defect: the host-side duplicate decoder accepted manifests the DSO path rejects, which could evict a working DSO plugin in favor of an unusable static one.

Additive: no ABI, protocol, or behavior change for existing consumers. Version 0.19.0 (conanfile + recipe.yaml + CHANGELOG agree).

Consumer PR: PlotJuggler/PJ4 (static-plugin registration) builds against this.

🤖 Generated with Claude Code

… for DSO and static plugins

A host that registers statically linked plugins has to decode their embedded
manifests itself (no DSO scan runs), and a private decoder invited a second,
weaker re-implementation host-side — letting a malformed static plugin pass
validation the DSO path would reject. decodeManifest(source_path, family,
manifest_json) is now part of the pj_plugins/host/plugin_catalog.hpp API:
required non-empty id/name/version, typed-field rejection, and the
message-parser encoding requirement, identically for both discovery paths.
Additive; no ABI or protocol change. Version 0.19.0.
@facontidavide
facontidavide force-pushed the feat/export-manifest-decoder branch from 9953f7d to bd897c7 Compare July 19, 2026 19:54
@facontidavide
facontidavide merged commit c5e7f1e into main Jul 19, 2026
7 checks passed
@facontidavide
facontidavide deleted the feat/export-manifest-decoder branch July 19, 2026 20:08
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