[tor-bugs] #31396 [Applications/Tor Browser]: Communication with noscript for security settings not working in nightlies

Tor Bug Tracker & Wiki blackhole at torproject.org
Wed Aug 28 12:14:51 UTC 2019


#31396: Communication with noscript for security settings not working in nightlies
-------------------------------------------------+-------------------------
 Reporter:  acat                                 |          Owner:  tbb-
                                                 |  team
     Type:  defect                               |         Status:
                                                 |  needs_information
 Priority:  Medium                               |      Milestone:
Component:  Applications/Tor Browser             |        Version:
 Severity:  Normal                               |     Resolution:
 Keywords:  ff68-esr, TorBrowserTeam201908,      |  Actual Points:
  tbb-9.0-must-alpha                             |
Parent ID:                                       |         Points:
 Reviewer:                                       |        Sponsor:
                                                 |  Sponsor44-can
-------------------------------------------------+-------------------------
Changes (by acat):

 * status:  new => needs_information


Comment:

 The issue has to do with a indexedDB error (`InvalidStateError: A mutation
 operation was attempted on a database that did not allow mutations.`),
 which is thrown when noscript tries to store something via
 `browser.storage.local` API (when it receives the setting change message
 from torbutton). This API moved to a indexedDB implementation in 62.

 I tracked down the cause of indexedDB not working to the quota manager
 service clearing (`Services.qms.clear()`) in torbutton. This is done on
 startup and on `New Identity`.

 I can reproduce this also on Firefox 68:

 1. Create a new profile.
 2. Install noscript from AMO.
 3. Set `dom.quotaManager.testing` pref to `true`.
 4. Call `Services.qms.clear()` in console.
 5. Set `dom.quotaManager.testing` pref to `false`.
 6. Open debug addon window for noscript in `about:debugging`.
 7. Run `browser.storage.local.set({foo:bar})`, it should throw
 `InvalidStateError: A mutation operation was attempted on a database that
 did not allow mutations.`.

 I think this does not affect indexeddb itself, but just the
 `browser.storage.*` implementation that uses indexeddb internally. I
 suspect `Services.qms.clear()` must be clearing some internal indexedDB
 data that is preventing the webextension storage API from working
 properly.

 Not sure if this is really a bug from Firefox side, since probably we
 should not be calling `Services.qms.clear()` directly. But perhaps we can
 file one.

 So we can solve this by not calling `Services.qms.clear()` (do we still
 need it? was it just for asm.js?). Or we can set
 `extensions.webextensions.ExtensionStorageIDB.enabled` to `false`, to use
 the previous non-indexedDB backend for `browser.storage.*`.

--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/31396#comment:3>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list