Fetching bookmarks information during onBeforeItemRemove may break the bookmarks cache

RESOLVED FIXED in Firefox 12

Status

()

Firefox
Bookmarks & History
RESOLVED FIXED
6 years ago
4 years ago

People

(Reporter: Usman Latif, Assigned: mak)

Tracking

8 Branch
Firefox 12
x86
Windows Vista
Points:
---
Bug Flags:
in-testsuite +

Firefox Tracking Flags

(Not tracked)

Details

Attachments

(1 attachment, 1 obsolete attachment)

7.51 KB, patch
dietrich
: review+
Details | Diff | Splinter Review
(Reporter)

Description

6 years ago
Created attachment 582754 [details]
test.js

User Agent: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7

Steps to reproduce:

I called removeFolderChildren on a folder that contained a child folder. The child folder contained a single bookmark.

Note: This bug reports the same issue as Bug 675416. The fix for bug 675416 is not comprehensive and fails in some cases.


Actual results:


After deleting the parent folder I was able to retrieve the information of the child folder. 

It is also possible to create additional bookmarks so that one of the new bookmarks reuses the id of the deleted folder and the bookmark service returns the information of the deleted folder in place of the newly created bookmark.



Expected results:

Firefox should have thrown an exception instead.
(Assignee)

Updated

6 years ago
Attachment #582754 - Attachment mime type: application/octet-stream → text/plain
(Assignee)

Comment 1

6 years ago
thanks for filing the bug, taking to check what happens.
Assignee: nobody → mak77
Status: UNCONFIRMED → ASSIGNED
Ever confirmed: true
(Assignee)

Comment 2

6 years ago
Created attachment 586981 [details] [diff] [review]
patch v1.0

The bug is caused by the calling order in the internal loop of RemoveFolderchildren. We can't change ordering in that loop since it may cause unwanted regressions. So I decided than rather than addressing each single possible failure point it's better to increase checks on the cache.
This makes the cache stronger by tracking items in the critical path, while registered they won't be added to the cache. Also asserts that each END has a corresponding BEGIN by checking the hash contents.
Attachment #582754 - Attachment is obsolete: true
Attachment #586981 - Flags: review?(dietrich)
(Assignee)

Comment 3

6 years ago
Ps: the existing assertion was catching this failure, but we didn't have a test leveraging that path. That's why I think this different approach is better, it enforces the condition.
Attachment #586981 - Flags: review?(dietrich) → review+
(Assignee)

Comment 4

6 years ago
https://hg.mozilla.org/integration/mozilla-inbound/rev/3c371703da3c
Flags: in-testsuite+
Target Milestone: --- → Firefox 12
(Assignee)

Comment 5

6 years ago
https://hg.mozilla.org/mozilla-central/rev/3c371703da3c
Status: ASSIGNED → RESOLVED
Last Resolved: 6 years ago
Resolution: --- → FIXED

Updated

4 years ago
Duplicate of this bug: 878061
You need to log in before you can comment on or make changes to this bug.