[ 
https://issues.apache.org/jira/browse/JCRVLT-858?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Konrad Windszus updated JCRVLT-858:
-----------------------------------
    Security:     (was: Private)

> Prevent persistent writes during dry runs
> -----------------------------------------
>
>                 Key: JCRVLT-858
>                 URL: https://issues.apache.org/jira/browse/JCRVLT-858
>             Project: Jackrabbit FileVault
>          Issue Type: Bug
>            Reporter: Konrad Windszus
>            Assignee: Rishabh Daim
>            Priority: Major
>             Fix For: 4.3.0
>
>
> The dry-run design relies on AutoSave substituting {{session.refresh(false)}} 
> for
> {{session.save()}} — which only reverts transient changes. Three code paths 
> make
> immediately persistent changes during the "simulation":
> * Vector A — namespaces: the full content parse runs under dryRun, and
> DocViewImporter.startPrefixMapping registers every unknown xmlns of every 
> parsed
> .content.xml via NamespaceRegistry.registerNamespace — a workspace-level 
> change Oak
> effectively cannot unregister, fired even for filter-excluded content 
> (parse-time event).
> The importer had no way to know it was in a dry run: the flag lived in 
> ImportOptions and
> was consumed by Importer/AutoSave only.
> * Vector B — sub-package relocation/metadata: JcrPackageImpl.extract's 
> sub-package
> block runs unguarded: s.getNode(path).remove(); s.save(), 
> s.getWorkspace().move(...)
> (both immediate), plus 
> def.clearLastUnpacked(false)/def.setDependencies(...,false)/
> def.setSubPackages(subIds) — transient, but persisted by the block's own 
> unguarded
> s.save().
> * Vector C — nested registration: extractSubpackage calls mgr.register(input, 
> true)
> unconditionally, really registering nested packages into /etc/packages under 
> dryRun.
> https://github.com/apache/jackrabbit-filevault-private/issues/16



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to