-
-
Notifications
You must be signed in to change notification settings - Fork 783
Use a safe serialization format for add-on state #19559
Copy link
Copy link
Closed
Labels
p2https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priorityhttps://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priorityrelease/blockingthis issue blocks the milestone releasethis issue blocks the milestone releasesecuritytriagedHas been triaged, issue is waiting for implementation.Has been triaged, issue is waiting for implementation.
Milestone
Metadata
Metadata
Assignees
Labels
p2https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priorityhttps://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priorityrelease/blockingthis issue blocks the milestone releasethis issue blocks the milestone releasesecuritytriagedHas been triaged, issue is waiting for implementation.Has been triaged, issue is waiting for implementation.
Type
Fields
Give feedbackNo fields configured for Task.
Related issues, PRs or discussions
Related #19560
What is the current state of the codebase?
NVDA uses
pickleto store the state of add-ons, including whether they're disabled, pending update or removal, or have their compatibility overridden. However, as the documentation states:Why are changes required?
Since we're persisting data to
%appData%, we cannot trust that it hasn't been tampered with.What technical changes are required?
Rather than using
pickleto store the data, use a safe serialisation format like JSON.Are the proposed technical changes API breaking?
Yes.
pickleand JSON are not compatible serialisation formats.Are there potential risks or issues with the proposed implementation?
We need to migrate old
addonsState.picklefiles to the new format. This is unlikely to be problematic.