Skip to content

Use a safe serialization format for add-on state #19559

Closed

Description

@SaschaCowley

Related issues, PRs or discussions

Related #19560

What is the current state of the codebase?

NVDA uses pickle to 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:

The pickle module is not secure. Only unpickle data you trust.

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 pickle to store the data, use a safe serialisation format like JSON.

Are the proposed technical changes API breaking?

Yes. pickle and JSON are not compatible serialisation formats.

Are there potential risks or issues with the proposed implementation?

We need to migrate old addonsState.pickle files to the new format. This is unlikely to be problematic.

Activity

  1. added this to the 2026.1 milestone on Feb 4, 2026
  2. self-assigned this
    on Feb 4, 2026
  3. added theissue type on Feb 4, 2026
  4. changed the title [-]Use JSON rather than pickle for add-on state[/-] [+]Use a safe serialization format for add-on state[/+] on Feb 4, 2026
  5. added
    p2https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority
    triagedHas been triaged, issue is waiting for implementation.
    on Feb 9, 2026
  6. added a commit that references this issue on Mar 9, 2026
    b241df7
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

p2https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priorityrelease/blockingthis issue blocks the milestone releasesecuritytriagedHas been triaged, issue is waiting for implementation.

Type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions