Commit Graph

613 Commits

Author SHA1 Message Date
Bobby Holley
7f37486434 Bug 965898 - Throw for [[Delete]] and [[DefineOwnProperty]]. r=gabor 2014-07-30 12:23:02 -07:00
Bobby Holley
825af5fcd8 Bug 965898 - Implement proper behavior for [[Enumerate]] And [[OwnPropertyKeys]]. r=gabor 2014-07-30 12:23:02 -07:00
Bobby Holley
a3fdc785eb Bug 965898 - Cross-origin objects should have null prototypes. r=gabor 2014-07-30 12:23:02 -07:00
Bobby Holley
c94d4e694c Bug 965898 - All properties from cross-origin objects are "configurable", non-enumerable, and non-writable. r=gabor 2014-07-30 12:23:02 -07:00
Bobby Holley
4855eef6ea Bug 965898 - All properties on cross-origin DOM objects should be |own|. r=gabor 2014-07-30 12:23:01 -07:00
Bobby Holley
971ad29192 Bug 965898 - Implement an Xray subclass that we can use to implement HTML5 cross-origin semantics. r=gabor 2014-07-30 12:23:01 -07:00
Bobby Holley
f90f3f7319 Bug 965898 - Drop support for XPCWN XOWs. r=gabor
XOWs only allow access to Window and Location, both of which are on WebIDL now.
2014-07-30 12:23:01 -07:00
Bobby Holley
7db28dae27 Backed out 16 changesets (bug 965898) for rooting hazards. CLOSED TREE
Backed out changeset ac4abde3579f (bug 965898)
Backed out changeset c4c7ab1a2f70 (bug 965898)
Backed out changeset e0bf3598dfe1 (bug 965898)
Backed out changeset 8f2788a0ba24 (bug 965898)
Backed out changeset 0d1cda4decaa (bug 965898)
Backed out changeset 3d80ffc439fb (bug 965898)
Backed out changeset ad66ab36fe2d (bug 965898)
Backed out changeset dcf7ccf6eff2 (bug 965898)
Backed out changeset d3f02e80355d (bug 965898)
Backed out changeset 212f2d05d9e7 (bug 965898)
Backed out changeset c350a2c0aa6d (bug 965898)
Backed out changeset c75acd0663a9 (bug 965898)
Backed out changeset d68f7ef0ae69 (bug 965898)
Backed out changeset 610e6d6e1a88 (bug 965898)
Backed out changeset 54d40a30f6ad (bug 965898)
Backed out changeset 403a0e1d2324 (bug 965898)
2014-07-29 22:57:59 -07:00
Bobby Holley
6b55e0bd57 Bug 965898 - Fix non-unified build bustage. r=me CLOSED TREE 2014-07-29 22:37:55 -07:00
Bobby Holley
ee67f37e7b Bug 965898 - Allow both gettable and settable attributes in Filter(). r=gabor 2014-07-29 21:35:32 -07:00
Bobby Holley
de4ecc2a87 Bug 965898 - Squelch exceptions during the shadowing detection in isCrossOriginAccessPermitted. r=gabor 2014-07-29 21:35:32 -07:00
Bobby Holley
393c112402 Bug 965898 - Switch policies for get{,Own}PropertyDescriptor. r=gabor 2014-07-29 21:35:32 -07:00
Bobby Holley
ad9059bb11 Bug 965898 - Generalize FilterSetter to work on all the relevant fields of JSPropertyDescriptor. r=gabor 2014-07-29 21:35:31 -07:00
Bobby Holley
212683cae4 Bug 965898 - Don't use a FilteringWrapper to get an unfiltered view in ChromeObjectWrapper. r=gabor
This is necessary because subsequent patches cause us to assert when invoking
getPropertyDescriptor on a FilteringWrapper for which |Policy| denies both GET
and SET.

This stuff is really a mess. I'm looking forward to it going away.
2014-07-29 21:35:31 -07:00
Bobby Holley
83e31f73e3 Bug 965898 - Throw for [[Delete]] and [[DefineOwnProperty]]. r=gabor 2014-07-29 21:35:31 -07:00
Bobby Holley
f2b2ae9683 Bug 965898 - Implement proper behavior for [[Enumerate]] And [[OwnPropertyKeys]]. r=gabor 2014-07-29 21:35:31 -07:00
Bobby Holley
ea11a4e359 Bug 965898 - Cross-origin objects should have null prototypes. r=gabor 2014-07-29 21:35:30 -07:00
Bobby Holley
1ddc37dfd7 Bug 965898 - All properties from cross-origin objects are "configurable", non-enumerable, and non-writable. r=gabor 2014-07-29 21:35:30 -07:00
Bobby Holley
7724a65eb8 Bug 965898 - All properties on cross-origin DOM objects should be |own|. r=gabor 2014-07-29 21:35:30 -07:00
Bobby Holley
605a17bbb6 Bug 965898 - Implement an Xray subclass that we can use to implement HTML5 cross-origin semantics. r=gabor 2014-07-29 21:35:30 -07:00
Bobby Holley
49b066f2d2 Bug 965898 - Drop support for XPCWN XOWs. r=gabor
XOWs only allow access to Window and Location, both of which are on WebIDL now.
2014-07-29 21:35:29 -07:00
Bobby Holley
64ee1af06f Bug 1042398 - Add a WaiveXrayWrapper override for ::iterate. r=gabor
I thought we had overrides for all the proxy traps that returned non-primitive
values, but it looks like we missed one.
2014-07-23 15:20:05 -07:00
Wes Kocher
575bd1d6b6 Backed out changeset 79d2db9a2a2c (bug 1042398) for build bustage on a CLOSED TREE 2014-07-23 13:08:24 -07:00
Bobby Holley
3c1972e20d Bug 1042398 - Add a WaiveXrayWrapper override for ::iterate. r=gabor
I thought we had overrides for all the proxy traps that returned non-primitive
values, but it looks like we missed one.
2014-07-23 12:36:22 -07:00
Boris Zbarsky
858b055504 Bug 1021066. Make named setters work even for non-overridebuiltins bindings over Xrays. r=bholley,jorendorff 2014-07-23 01:06:33 -04:00
Mike Hommey
d10b15b035 Bug 1041860 - Avoid setting FINAL_LIBRARY to libraries that further use a FINAL_LIBRARY. r=mshal 2014-07-23 08:37:51 +09:00
Bobby Holley
81109a2b27 Bug 742444 - Only propagate waivers between same-origin compartments. r=gabor 2014-07-22 16:14:27 -07:00
Bobby Holley
bac5dd0535 Bug 742444 - Pass the old wrapper or value to the prewrap callback instead of its flags. r=gabor
We need this so that we can reason about the origin of the wrapper that
previously had a waiver and decide whether or not to extend it.
2014-07-22 16:14:27 -07:00
Bobby Holley
4bbb23f320 Bug 930091 - Check objects at COW membranes. r=gabor,r=msucan 2014-07-20 15:36:32 -06:00
Bobby Holley
984a293d6d Bug 1040181 - Use an opaque wrapper rather than failing in Rewrap. r=gabor 2014-07-20 10:03:58 -06:00
Bobby Holley
51cadd7069 Bug 1038844 - Implement a COW opt-out for automation. r=gabor,sr=mrbkap 2014-07-17 21:34:48 -07:00
Bobby Holley
09cb98bd4a Bug 1036185 - Clean up logic in IsPermitted (bonus fix). r=gabor 2014-07-15 09:04:19 -07:00
Bill McCloskey
c28e537321 Bug 1017323 - Fix some non-unified build bustage 2014-07-14 22:49:09 -07:00
Bill McCloskey
8b9dfc45b5 Bug 1017323 - Add-on interposition (r=bholley) 2014-07-14 22:10:05 -07:00
Bobby Holley
77cc9f70ea Bug 856067 - Add some helpful logging to the console when we deny access to a non-Xrayable object. r=gabor 2014-07-14 10:09:07 -07:00
Bobby Holley
a724996a80 Bug 856067 - Remove special case for content XBL scopes. r=gabor
This is now the default behavior. \o/
2014-07-14 10:09:07 -07:00
Bobby Holley
f53b8f6e56 Bug 856067 - Make unwaived non-Xrayable objects opaque from privileged code. r=gabor 2014-07-14 10:09:07 -07:00
Boris Zbarsky
7bf5a529d9 Bug 832014 part 9. Switch AccessCheck to using the generated LocationBinding::IsPermitted method. r=bholley 2014-07-11 19:34:44 -04:00
Bobby Holley
2b47d5e6dc Bug 987669 - Just use macros because MSVC and gcc don't have real constexpr support. r=me CLOSED TREE 2014-07-11 09:37:00 -07:00
Bobby Holley
e02167ae21 Bug 987669 - Turn on Xrays for Error objects. r=gabor 2014-07-11 09:09:22 -07:00
Bobby Holley
7d9004da47 Bug 987669 - Add Xray support for FooError.prototype.name. r=gabor 2014-07-11 09:09:22 -07:00
Bobby Holley
e0938bdec8 Bug 987669 - Implement Xray support for the data properties on ErrorObject instances. r=gabor 2014-07-11 09:09:21 -07:00
Bobby Holley
d896ae2a5e Bug 987669 - Implement IsErrorObjectKey and do more at compile-time. r=gabor 2014-07-11 09:09:21 -07:00
Chris Peterson
fca203c323 Bug 1036778 - Replace MOZ_ASSUME_UNREACHABLE with MOZ_CRASH in js/xpconnect. r=bholley 2014-06-29 20:42:36 -07:00
Bobby Holley
65f180179d Bug 1034262 - Honor the wantXrays of both sides of the membrane when computing same-origin wrappers. r=gabor
The basic problem in the testcase is that one compartment requests same-origin
Xrays via wantXrays=true (the default for Sandboxes) while the other does not.
The current code only considers the wantXrays flag of the compartment performing
the access, so we end up in a situation where we have same-origin compartments,
but Xray in one direction and Transparent in the other.

This is a problem for crossCompartmentFunction.apply(null, [arg]). If both
globals get transparent wrappers, there's obviously no problem. And if both
globals get XrayWrappers, then the |apply| happens on the XrayWrapper of the
function in the caller's compartment. So the Array is unpacked in the caller's
compartment, and again we have no problem.

But if the caller gets Transparent and the callee gets Xrays, then we end up
invoking |apply| from the callee's side, which then gets an XrayWrapper to the
array. This XrayWrapper may do surprising things, leading to the odd situation
in the testcase.

Same-origin Xrays are kind of broken anyway, but I don't think we'll ever be
able to get rid of them. So the most sensible thing to do is probably to honor
the flag (if set) from either compartment. This patch does that.
2014-07-10 10:04:30 -07:00
Bobby Holley
f99be51d16 Bug 1034239 - Replace GentlyOpaque with an "Xray-to-nothing" wrapper. r=gabor
I did this wrong before. Making this a SecurityWrapper means that the caller does
not subsumes the target, and that the target therefore needs to be protected
from the caller. But GentlyOpaque was supposed to be an analog of PermissiveXray
for use when no useful XrayTraits exist, so it should behave similarly.

If we make this a Filtering Security Wrapper, we get a bunch of assertions where we
expect CheckedUnwrap to succeed for a chrome-side wrapper. And we can't making it
a Filtering Non-Security Wrapper, because then the filtering policy isn't even
consulted (an optimization in jsproxy.cpp).

Really, we want all of the Xray machinery (like the ability to waive and to place
expandos), and we just don't want to resolve any properties. This patch does this.
2014-07-10 09:31:37 -07:00
Bobby Holley
86b1eef248 Bug 1034239 - Add Proxies to ForceCOWBehavior. r=gabor 2014-07-10 09:31:37 -07:00
Jan de Mooij
7fd4ee6769 Bug 1034627 part 3 - Fix SandboxDump, AccessCheck.cpp to work with Latin1 strings and nursery strings. r=bholley 2014-07-10 17:36:35 +02:00
Bobby Holley
7ee918bfb2 Bug 1033927 - Drop support for custom [object XrayWrapper [object ClassName]] stringification. r=peterv 2014-07-07 13:11:24 -07:00
Jan de Mooij
3c7459b21a Bug 1034191 - Make nsDependentJSString users work with Latin1 strings and nursery-allocated strings. r=bz 2014-07-05 17:30:54 +02:00