From 34b474302bb390a6e2433af13c66af4aff667fa0 Mon Sep 17 00:00:00 2001 From: "norris%netscape.com" Date: Wed, 1 Sep 1999 00:54:35 +0000 Subject: [PATCH] Add all-powerful system principals. Remove some dead code from the build. git-svn-id: svn://10.0.0.236/trunk@45380 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/caps/idl/Makefile.in | 9 +- mozilla/caps/idl/makefile.win | 9 +- mozilla/caps/idl/nsICertificatePrincipal.idl | 34 +++ mozilla/caps/idl/nsICodebasePrincipal.idl | 32 +++ mozilla/caps/idl/nsIPrincipal.idl | 37 +-- mozilla/caps/idl/nsIPrincipalManager.idl | 50 ---- mozilla/caps/idl/nsIScriptSecurityManager.idl | 14 +- mozilla/caps/include/MANIFEST | 1 + mozilla/caps/include/Makefile.in | 16 +- mozilla/caps/include/makefile.win | 14 +- mozilla/caps/include/nsCertificatePrincipal.h | 2 +- mozilla/caps/include/nsCodebasePrincipal.h | 6 +- .../caps/include/nsScriptSecurityManager.h | 4 +- mozilla/caps/include/nsSystemPrincipal.h | 52 ++++ mozilla/caps/src/Makefile.in | 13 +- mozilla/caps/src/admin.cpp | 2 + mozilla/caps/src/makefile.win | 14 +- mozilla/caps/src/nsCaps.cpp | 3 + mozilla/caps/src/nsCertificatePrincipal.cpp | 8 + mozilla/caps/src/nsCodebasePrincipal.cpp | 100 ++++--- mozilla/caps/src/nsPrincipalManager.cpp | 70 +++-- mozilla/caps/src/nsScriptSecurityManager.cpp | 264 +++++++++++++++--- mozilla/caps/src/nsSecurityManagerFactory.cpp | 202 ++++++++------ mozilla/caps/src/nsSystemPrincipal.cpp | 94 +++++++ .../chrome/src/nsChromeProtocolHandler.cpp | 12 +- mozilla/dom/src/base/nsGlobalWindow.cpp | 14 +- mozilla/dom/src/base/nsLocation.cpp | 28 +- mozilla/modules/oji/public/nsjvm.h | 1 - mozilla/modules/oji/src/lcglue.cpp | 1 - mozilla/modules/oji/src/nsJVMManager.cpp | 1 - .../chrome/src/nsChromeProtocolHandler.cpp | 12 +- .../webshell/tests/viewer/nsSetupRegistry.cpp | 3 - 32 files changed, 741 insertions(+), 381 deletions(-) create mode 100644 mozilla/caps/idl/nsICertificatePrincipal.idl create mode 100644 mozilla/caps/idl/nsICodebasePrincipal.idl delete mode 100644 mozilla/caps/idl/nsIPrincipalManager.idl create mode 100644 mozilla/caps/include/nsSystemPrincipal.h create mode 100644 mozilla/caps/src/nsSystemPrincipal.cpp diff --git a/mozilla/caps/idl/Makefile.in b/mozilla/caps/idl/Makefile.in index ea75a1cfb23..d487c152aa2 100644 --- a/mozilla/caps/idl/Makefile.in +++ b/mozilla/caps/idl/Makefile.in @@ -26,14 +26,9 @@ MODULE = caps XPIDLSRCS = \ nsIScriptSecurityManager.idl \ - nsICapsSecurityCallbacks.idl \ nsIPrincipal.idl \ - nsIPrincipalArray.idl \ - nsIPrincipalManager.idl \ - nsIPrivilege.idl \ - nsIPrivilegeManager.idl \ - nsICapsManager.idl \ - nsITarget.idl \ + nsICodebasePrincipal.idl \ + nsICertificatePrincipal.idl \ $(NULL) include $(topsrcdir)/config/rules.mk diff --git a/mozilla/caps/idl/makefile.win b/mozilla/caps/idl/makefile.win index e40d3773cc4..6193f38ba47 100644 --- a/mozilla/caps/idl/makefile.win +++ b/mozilla/caps/idl/makefile.win @@ -21,14 +21,9 @@ MODULE=caps XPIDLSRCS= \ .\nsIScriptSecurityManager.idl \ - .\nsICapsSecurityCallbacks.idl \ .\nsIPrincipal.idl \ - .\nsIPrincipalArray.idl \ - .\nsIPrincipalManager.idl \ - .\nsIPrivilege.idl \ - .\nsIPrivilegeManager.idl \ - .\nsICapsManager.idl \ - .\nsITarget.idl \ + .\nsICertificatePrincipal.idl \ + .\nsICodebasePrincipal.idl \ $(NULL) include <$(DEPTH)\config\rules.mak> diff --git a/mozilla/caps/idl/nsICertificatePrincipal.idl b/mozilla/caps/idl/nsICertificatePrincipal.idl new file mode 100644 index 00000000000..c1b91490950 --- /dev/null +++ b/mozilla/caps/idl/nsICertificatePrincipal.idl @@ -0,0 +1,34 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape Public License + * Version 1.0 (the "NPL"); you may not use this file except in + * compliance with the NPL. You may obtain a copy of the NPL at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the NPL is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * for the specific language governing rights and limitations under the + * NPL. + * + * The Initial Developer of this code under the NPL is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1999 Netscape Communications Corporation. All Rights + * Reserved. + */ +/* Defines an interface for certificate principals. */ +#include "nsIPrincipal.idl" + +%{C++ +#define NS_CERTIFICATEPRINCIPAL_PROGID "component://netscape/certificateprincipal" +#define NS_CERTIFICATEPRINCIPAL_CLASSNAME "certificateprincipal" +%} + +[uuid(ebfefcd0-25e1-11d2-8160-006008119d7a)] +interface nsICertificatePrincipal : nsIPrincipal { + void GetPublicKey(out string publicKey); + void GetCompanyName(out string ppCompanyName); + void GetCertificateAuthority(out string ppCertAuthority); + void GetSerialNumber(out string ppSerialNumber); + void GetExpirationDate(out string ppExpDate); + void GetFingerPrint(out string ppFingerPrint); +}; diff --git a/mozilla/caps/idl/nsICodebasePrincipal.idl b/mozilla/caps/idl/nsICodebasePrincipal.idl new file mode 100644 index 00000000000..33370bc06cf --- /dev/null +++ b/mozilla/caps/idl/nsICodebasePrincipal.idl @@ -0,0 +1,32 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape Public License + * Version 1.0 (the "NPL"); you may not use this file except in + * compliance with the NPL. You may obtain a copy of the NPL at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the NPL is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * for the specific language governing rights and limitations under the + * NPL. + * + * The Initial Developer of this code under the NPL is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1999 Netscape Communications Corporation. All Rights + * Reserved. + */ +/* Defines an interface for codebase principals. */ +#include "nsIPrincipal.idl" +interface nsIURI; + +%{C++ +#define NS_CODEBASEPRINCIPAL_PROGID "component://netscape/codebaseprincipal" +#define NS_CODEBASEPRINCIPAL_CLASSNAME "codebaseprincipal" +%} + +[uuid(829fe440-25e1-11d2-8160-006008119d7a)] +interface nsICodebasePrincipal : nsIPrincipal { + nsIURI GetURI(); + boolean SameOrigin(in nsIPrincipal other); +}; + diff --git a/mozilla/caps/idl/nsIPrincipal.idl b/mozilla/caps/idl/nsIPrincipal.idl index ce849f101ca..c95fb17238c 100644 --- a/mozilla/caps/idl/nsIPrincipal.idl +++ b/mozilla/caps/idl/nsIPrincipal.idl @@ -15,9 +15,11 @@ * Copyright (C) 1999 Netscape Communications Corporation. All Rights * Reserved. */ -/* Defines interfaces for codebase and certificate principals */ + +/* Defines the abstract interface for a principal. */ + #include "nsISupports.idl" -interface nsIURI; + %{C++ struct JSPrincipals; %} @@ -26,33 +28,10 @@ struct JSPrincipals; [uuid(ff9313d0-25e1-11d2-8160-006008119d7a)] interface nsIPrincipal : nsISupports { - void GetJSPrincipals(out JSPrincipals jsprin); - void ToString(out string result); - void Equals(in nsIPrincipal other, out boolean result); + void ToString(out string result); + void Equals(in nsIPrincipal other, out boolean result); + void GetJSPrincipals(out JSPrincipals jsprin); + void CanAccess(in string capability, out boolean result); }; -%{C++ -#define NS_CODEBASEPRINCIPAL_PROGID "component://netscape/codebaseprincipal" -#define NS_CODEBASEPRINCIPAL_CLASSNAME "codebaseprincipal" -%} -[uuid(829fe440-25e1-11d2-8160-006008119d7a)] -interface nsICodebasePrincipal : nsIPrincipal { - void GetURI(out nsIURI url); - void SameOrigin(in nsIPrincipal other, out boolean result); -}; - -%{C++ -#define NS_CERTIFICATEPRINCIPAL_PROGID "component://netscape/codebaseprincipal" -#define NS_CERTIFICATEPRINCIPAL_CLASSNAME "codebaseprincipal" -%} - -[uuid(ebfefcd0-25e1-11d2-8160-006008119d7a)] -interface nsICertificatePrincipal : nsIPrincipal { - void GetPublicKey(out string publicKey); - void GetCompanyName(out string ppCompanyName); - void GetCertificateAuthority(out string ppCertAuthority); - void GetSerialNumber(out string ppSerialNumber); - void GetExpirationDate(out string ppExpDate); - void GetFingerPrint(out string ppFingerPrint); -}; diff --git a/mozilla/caps/idl/nsIPrincipalManager.idl b/mozilla/caps/idl/nsIPrincipalManager.idl deleted file mode 100644 index b71ac8c1864..00000000000 --- a/mozilla/caps/idl/nsIPrincipalManager.idl +++ /dev/null @@ -1,50 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1999 Netscape Communications Corporation. All Rights - * Reserved. - */ -/*creates, registers, and performs logical operations on principals*/ -#include "nsISupports.idl" -#include "nsIPrincipal.idl" -#include "nsITarget.idl" -#include "nsIPrincipalArray.idl" -interface nsIURI; -interface nsIScriptContext; - -[uuid(dc7d0bb0-25e1-11d2-8160-006008119d7a)] -interface nsIPrincipalManager : nsISupports -{ - void CreateCodebasePrincipal([const] in string codebaseURL, in nsIURI uri, out nsIPrincipal prin); - -%{C++ - NS_IMETHOD - CreateCertificatePrincipal(const unsigned char * * certChain, PRUint32 * certChainLengths, PRUint32 noOfCerts, nsIPrincipal * * prin) = 0; -%} - - void RegisterPrincipal(in nsIPrincipal prin); - - void UnregisterPrincipal(in nsIPrincipal prin, out boolean result); - - void CanExtendTrust(in nsIPrincipalArray fromPrinArray, in nsIPrincipalArray toPrinArray, out boolean result); - - void NewPrincipalArray(in unsigned long count, out nsIPrincipalArray result); - - void CheckMatchPrincipal(in nsIScriptContext cx, in nsIPrincipal principal, in long callerDepth, out boolean result); - -}; -%{C++ -#define NS_PRINCIPALMANAGER_PROGID "component://netscape/principalmanager" -#define NS_PRINCIPALMANAGER_CLASSNAME "principalmanager" -%} \ No newline at end of file diff --git a/mozilla/caps/idl/nsIScriptSecurityManager.idl b/mozilla/caps/idl/nsIScriptSecurityManager.idl index fa358ac2701..bd7c4096680 100644 --- a/mozilla/caps/idl/nsIScriptSecurityManager.idl +++ b/mozilla/caps/idl/nsIScriptSecurityManager.idl @@ -55,13 +55,17 @@ interface nsIScriptSecurityManager : nsISupports const short eJSTarget_UniversalDialerAccess=7; const short eJSTarget_Max=8; - void CheckScriptAccess(in nsIScriptContext cx, in voidStar obj, - [const] in string prop, in boolean isWrite, - out boolean res); - void CanAccessTarget(in JSContext cx, in short target, out boolean res); + boolean CheckScriptAccess(in nsIScriptContext cx, in voidStar obj, + [const] in string prop, in boolean isWrite); + + boolean CheckURI(in nsIScriptContext cx, in nsIURI uri); + + nsIPrincipal GetSystemPrincipal(); + + nsIPrincipal CreateCodebasePrincipal(in nsIURI aURI); }; %{C++ #define NS_SCRIPTSECURITYMANAGER_PROGID "component://netscape/scriptsecuritymanager" #define NS_SCRIPTSECURITYMANAGER_CLASSNAME "scriptsecuritymanager" -%} \ No newline at end of file +%} diff --git a/mozilla/caps/include/MANIFEST b/mozilla/caps/include/MANIFEST index f8868cf79aa..439d6e3e19b 100644 --- a/mozilla/caps/include/MANIFEST +++ b/mozilla/caps/include/MANIFEST @@ -11,6 +11,7 @@ nsPrivilege.h nsPrivilegeManager.h nsPrivilegeTable.h nsScriptSecurityManager.h +nsSystemPrincipal.h nsSystemPrivilegeTable.h nsTarget.h nsUserDialogHelper.h diff --git a/mozilla/caps/include/Makefile.in b/mozilla/caps/include/Makefile.in index b866798b1ef..e5e4688485c 100644 --- a/mozilla/caps/include/Makefile.in +++ b/mozilla/caps/include/Makefile.in @@ -24,23 +24,11 @@ VPATH = @srcdir@ include $(DEPTH)/config/autoconf.mk EXPORTS = \ - admin.h \ - jpermission.h \ - nsCaps.h \ - nsCCapsManager.h \ + nsSystemPrincipal.h \ nsCertificatePrincipal.h \ nsCodebasePrincipal.h \ nsJSPrincipals.h \ - nsPrincipalArray.h \ - nsPrincipalManager.h \ - nsPrivilege.h \ - nsPrivilegeManager.h \ - nsPrivilegeTable.h \ - nsScriptSecurityManager.h \ - nsSystemPrivilegeTable.h \ - nsTarget.h \ - nsUserDialogHelper.h \ - nsUserTarget.h + nsScriptSecurityManager.h EXPORTS := $(addprefix $(srcdir)/, $(EXPORTS)) diff --git a/mozilla/caps/include/makefile.win b/mozilla/caps/include/makefile.win index 75a8adc0f46..2aadc7ea2c5 100755 --- a/mozilla/caps/include/makefile.win +++ b/mozilla/caps/include/makefile.win @@ -29,23 +29,11 @@ MODULE=caps DEPTH=..\.. EXPORTS= \ - admin.h \ - jpermission.h \ - nsCaps.h \ - nsCCapsManager.h \ nsCertificatePrincipal.h \ nsCodebasePrincipal.h \ nsJSPrincipals.h \ - nsPrincipalArray.h \ - nsPrincipalManager.h \ - nsPrivilege.h \ - nsPrivilegeManager.h \ - nsPrivilegeTable.h \ nsScriptSecurityManager.h \ - nsSystemPrivilegeTable.h \ - nsTarget.h \ - nsUserDialogHelper.h \ - nsUserTarget.h \ + nsSystemPrincipal.h \ $(NULL) include <$(DEPTH)/config/rules.mak> diff --git a/mozilla/caps/include/nsCertificatePrincipal.h b/mozilla/caps/include/nsCertificatePrincipal.h index 14de47081ef..d3641ee4ed0 100644 --- a/mozilla/caps/include/nsCertificatePrincipal.h +++ b/mozilla/caps/include/nsCertificatePrincipal.h @@ -20,7 +20,7 @@ #define _NS_CERTIFICATE_PRINCIPAL_H_ #include "jsapi.h" #include "nsVector.h" -#include "nsIPrincipal.h" +#include "nsICertificatePrincipal.h" #define NS_CERTIFICATEPRINCIPALMANAGER_CID \ { 0x7ee2a4c0, 0x4b91, 0x11d3, \ diff --git a/mozilla/caps/include/nsCodebasePrincipal.h b/mozilla/caps/include/nsCodebasePrincipal.h index 1ff2e5fd9de..11db3bb4753 100644 --- a/mozilla/caps/include/nsCodebasePrincipal.h +++ b/mozilla/caps/include/nsCodebasePrincipal.h @@ -20,7 +20,7 @@ #define _NS_CODEBASE_PRINCIPAL_H_ #include "jsapi.h" -#include "nsIPrincipal.h" +#include "nsICodebasePrincipal.h" #include "nsIURI.h" #include "nsJSPrincipals.h" @@ -45,8 +45,8 @@ public: virtual ~nsCodebasePrincipal(void); protected: - nsIURI *itsURI; - nsJSPrincipals itsJSPrincipals; + nsIURI *mURI; + nsJSPrincipals mJSPrincipals; }; #endif // _NS_CODEBASE_PRINCIPAL_H_ diff --git a/mozilla/caps/include/nsScriptSecurityManager.h b/mozilla/caps/include/nsScriptSecurityManager.h index fbf588ade2a..9ffd693dcce 100644 --- a/mozilla/caps/include/nsScriptSecurityManager.h +++ b/mozilla/caps/include/nsScriptSecurityManager.h @@ -50,7 +50,7 @@ private: GetObjectPrincipal(JSContext *aCx, JSObject *aObj, nsIPrincipal **result); NS_IMETHOD - CheckPermissions(JSContext *aCx, JSObject *aObj, PRInt16 aTarget, + CheckPermissions(JSContext *aCx, JSObject *aObj, const char *aCapability, PRBool* result); PRInt32 GetSecurityLevel(JSContext *cx, char *prop_name, int priv_code); @@ -60,6 +60,8 @@ private: char * GetSitePolicy(const char *org); + + nsIPrincipal *mSystemPrincipal; }; #endif /*_NS_SCRIPT_SECURITY_MANAGER_H_*/ diff --git a/mozilla/caps/include/nsSystemPrincipal.h b/mozilla/caps/include/nsSystemPrincipal.h new file mode 100644 index 00000000000..d46259c9c40 --- /dev/null +++ b/mozilla/caps/include/nsSystemPrincipal.h @@ -0,0 +1,52 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape Public License + * Version 1.0 (the "NPL"); you may not use this file except in + * compliance with the NPL. You may obtain a copy of the NPL at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the NPL is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * for the specific language governing rights and limitations under the + * NPL. + * + * The Initial Developer of this code under the NPL is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1999 Netscape Communications Corporation. All Rights + * Reserved. + */ +/* The privileged system principal. */ +#ifndef _NS_SYSTEM_PRINCIPAL_H_ +#define _NS_SYSTEM_PRINCIPAL_H_ + +#include "jsapi.h" +#include "nsIPrincipal.h" +#include "nsIURI.h" +#include "nsJSPrincipals.h" + +// TODO: get new cid +#define NS_SYSTEMPRINCIPAL_CID \ +{ 0x7ee2a400, 0x0c99, 0xaad3, \ +{ 0xba, 0x18, 0xd7, 0x60, 0xb0, 0xf1, 0x99, 0xa2 }} + +class nsSystemPrincipal : public nsIPrincipal { +public: + + //NS_DEFINE_STATIC_CID_ACCESSOR(NS_PRINCIPAL_CID) + + NS_DECL_ISUPPORTS + NS_DECL_NSIPRINCIPAL + + nsSystemPrincipal(); + + NS_IMETHOD + Init(); + + virtual ~nsSystemPrincipal(void); + +private: + nsJSPrincipals mJSPrincipals; + +}; + +#endif // _NS_SYSTEM_PRINCIPAL_H_ diff --git a/mozilla/caps/src/Makefile.in b/mozilla/caps/src/Makefile.in index 21a2d77ae34..dc423c43984 100644 --- a/mozilla/caps/src/Makefile.in +++ b/mozilla/caps/src/Makefile.in @@ -28,23 +28,12 @@ LIBRARY_NAME = caps IS_COMPONENT = 1 CPPSRCS = \ - admin.cpp \ - nsCaps.cpp \ - nsCCapsManager.cpp \ + nsSystemPrincipal.cpp \ nsCertificatePrincipal.cpp \ nsCodebasePrincipal.cpp \ nsJSPrincipals.cpp \ - nsPrincipalArray.cpp \ - nsPrincipalManager.cpp \ - nsPrivilege.cpp \ - nsPrivilegeManager.cpp \ - nsPrivilegeTable.cpp \ nsScriptSecurityManager.cpp \ nsSecurityManagerFactory.cpp \ - nsSystemPrivilegeTable.cpp \ - nsTarget.cpp \ - nsUserDialogHelper.cpp \ - nsUserTarget.cpp \ $(NULL) EXTRA_DSO_LDOPTS = \ diff --git a/mozilla/caps/src/admin.cpp b/mozilla/caps/src/admin.cpp index e5516c2332e..cd4a8e8285a 100644 --- a/mozilla/caps/src/admin.cpp +++ b/mozilla/caps/src/admin.cpp @@ -31,6 +31,7 @@ extern "C" { #endif /* __cplusplus */ +#if 0 /* * A D M I N U I A P I * @@ -74,6 +75,7 @@ java_netscape_security_removePrivilege(const char * charSetName, char * prinName return result; } +#endif #ifdef __cplusplus diff --git a/mozilla/caps/src/makefile.win b/mozilla/caps/src/makefile.win index ffe08e8dc7b..21bd7bf3546 100755 --- a/mozilla/caps/src/makefile.win +++ b/mozilla/caps/src/makefile.win @@ -49,27 +49,15 @@ DLL=.\$(OBJDIR)\$(DLLNAME).dll #//------------------------------------------------------------------------ C_OBJS= \ - .\$(OBJDIR)\jpermission.obj \ $(NULL) CPP_OBJS= \ - .\$(OBJDIR)\admin.obj \ - .\$(OBJDIR)\nsCaps.obj \ - .\$(OBJDIR)\nsCCapsManager.obj \ .\$(OBJDIR)\nsCertificatePrincipal.obj \ .\$(OBJDIR)\nsCodebasePrincipal.obj \ .\$(OBJDIR)\nsJSPrincipals.obj \ - .\$(OBJDIR)\nsPrincipalArray.obj \ - .\$(OBJDIR)\nsPrincipalManager.obj \ - .\$(OBJDIR)\nsPrivilege.obj \ - .\$(OBJDIR)\nsPrivilegeManager.obj \ - .\$(OBJDIR)\nsPrivilegeTable.obj \ .\$(OBJDIR)\nsScriptSecurityManager.obj \ .\$(OBJDIR)\nsSecurityManagerFactory.obj \ - .\$(OBJDIR)\nsSystemPrivilegeTable.obj \ - .\$(OBJDIR)\nsTarget.obj \ - .\$(OBJDIR)\nsUserDialogHelper.obj \ - .\$(OBJDIR)\nsUserTarget.obj \ + .\$(OBJDIR)\nsSystemPrincipal.obj \ $(NULL) #//------------------------------------------------------------------------ diff --git a/mozilla/caps/src/nsCaps.cpp b/mozilla/caps/src/nsCaps.cpp index 074b78efdfb..a2ed2058717 100644 --- a/mozilla/caps/src/nsCaps.cpp +++ b/mozilla/caps/src/nsCaps.cpp @@ -31,6 +31,8 @@ #include "nsITarget.h" #include "nsCCapsManager.h" +#if 0 + /* * With the introduction of '-reg_mode' flag, * we now have a variable that holds the information @@ -326,3 +328,4 @@ nsCapsGetRegistrationModeFlag(void) PR_END_EXTERN_C +#endif \ No newline at end of file diff --git a/mozilla/caps/src/nsCertificatePrincipal.cpp b/mozilla/caps/src/nsCertificatePrincipal.cpp index 1ceb43d3bb1..ca9d4dbed6e 100644 --- a/mozilla/caps/src/nsCertificatePrincipal.cpp +++ b/mozilla/caps/src/nsCertificatePrincipal.cpp @@ -22,6 +22,14 @@ static NS_DEFINE_IID(kICertificatePrincipalIID, NS_ICERTIFICATEPRINCIPAL_IID); NS_IMPL_ISUPPORTS(nsCertificatePrincipal, kICertificatePrincipalIID); +NS_IMETHODIMP +nsCertificatePrincipal::CanAccess(const char *capability, PRBool *result) +{ + // Later: query database for this capability + *result = PR_FALSE; + return NS_OK; +} + NS_IMETHODIMP nsCertificatePrincipal::GetPublicKey(char ** publicKey) { diff --git a/mozilla/caps/src/nsCodebasePrincipal.cpp b/mozilla/caps/src/nsCodebasePrincipal.cpp index c504ff7cfb4..4455590925c 100644 --- a/mozilla/caps/src/nsCodebasePrincipal.cpp +++ b/mozilla/caps/src/nsCodebasePrincipal.cpp @@ -12,43 +12,26 @@ * * The Initial Developer of this code under the NPL is Netscape * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights + * Copyright (C) 1999 Netscape Communications Corporation. All Rights * Reserved. */ -/* Describes principals by thier orginating uris */ + +/* Describes principals by their orginating uris */ + #include "nsCodebasePrincipal.h" #include "nsIComponentManager.h" #include "nsIServiceManager.h" #include "nsIURL.h" #include "nsCOMPtr.h" -#include "nsXPIDLString.h" - static NS_DEFINE_IID(kICodebasePrincipalIID, NS_ICODEBASEPRINCIPAL_IID); static char gFileScheme[] = "file"; NS_IMPL_ISUPPORTS(nsCodebasePrincipal, kICodebasePrincipalIID); -NS_IMETHODIMP -nsCodebasePrincipal::GetJSPrincipals(JSPrincipals **jsprin) -{ - if (itsJSPrincipals.nsIPrincipalPtr == nsnull) { - itsJSPrincipals.nsIPrincipalPtr = this; - NS_ADDREF(itsJSPrincipals.nsIPrincipalPtr); - // matching release in nsDestroyJSPrincipals - } - *jsprin = &itsJSPrincipals; - JSPRINCIPALS_HOLD(cx, *jsprin); - return NS_OK; -} - -NS_IMETHODIMP -nsCodebasePrincipal::GetURI(nsIURI **uri) -{ - *uri = itsURI; - NS_ADDREF(*uri); - return NS_OK; -} +//////////////////////////////////// +// Methods implementing nsIPrincipal +//////////////////////////////////// NS_IMETHODIMP nsCodebasePrincipal::ToString(char **result) @@ -66,7 +49,7 @@ nsCodebasePrincipal::Equals(nsIPrincipal *other, PRBool *result) return NS_OK; } nsCOMPtr otherCodebase; - if (!NS_SUCCEEDED(other->QueryInterface( + if (NS_FAILED(other->QueryInterface( NS_GET_IID(nsICodebasePrincipal), (void **) getter_AddRefs(otherCodebase)))) { @@ -74,15 +57,50 @@ nsCodebasePrincipal::Equals(nsIPrincipal *other, PRBool *result) return NS_OK; } nsCOMPtr otherURI; - if (!NS_SUCCEEDED(otherCodebase->GetURI(getter_AddRefs(otherURI)))) { + if (NS_FAILED(otherCodebase->GetURI(getter_AddRefs(otherURI)))) { return NS_ERROR_FAILURE; } - if (!itsURI || !NS_SUCCEEDED(otherURI->Equals(itsURI, result))) { + if (!mURI || NS_FAILED(otherURI->Equals(mURI, result))) { return NS_ERROR_FAILURE; } return NS_OK; } +NS_IMETHODIMP +nsCodebasePrincipal::GetJSPrincipals(JSPrincipals **jsprin) +{ + if (mJSPrincipals.nsIPrincipalPtr == nsnull) { + mJSPrincipals.nsIPrincipalPtr = this; + NS_ADDREF(mJSPrincipals.nsIPrincipalPtr); + // matching release in nsDestroyJSPrincipals + } + *jsprin = &mJSPrincipals; + JSPRINCIPALS_HOLD(cx, *jsprin); + return NS_OK; +} + +NS_IMETHODIMP +nsCodebasePrincipal::CanAccess(const char *capability, PRBool *result) +{ + // Codebases have no special privileges. + *result = PR_FALSE; + return NS_OK; +} + + +//////////////////////////////////////////// +// Methods implementing nsICodebasePrincipal +//////////////////////////////////////////// + +NS_IMETHODIMP +nsCodebasePrincipal::GetURI(nsIURI **uri) +{ + *uri = mURI; + NS_ADDREF(*uri); + return NS_OK; +} + + NS_IMETHODIMP nsCodebasePrincipal::SameOrigin(nsIPrincipal *other, PRBool *result) @@ -93,21 +111,21 @@ nsCodebasePrincipal::SameOrigin(nsIPrincipal *other, PRBool *result) return NS_OK; } nsCOMPtr otherCodebase; - if (!NS_SUCCEEDED(other->QueryInterface( + if (NS_FAILED(other->QueryInterface( NS_GET_IID(nsICodebasePrincipal), (void **) getter_AddRefs(otherCodebase)))) { return NS_OK; } nsCOMPtr otherURI; - if (!NS_SUCCEEDED(otherCodebase->GetURI(getter_AddRefs(otherURI)))) { + if (NS_FAILED(otherCodebase->GetURI(getter_AddRefs(otherURI)))) { return NS_ERROR_FAILURE; } char *scheme1 = nsnull; nsresult rv = otherURI->GetScheme(&scheme1); char *scheme2 = nsnull; if (NS_SUCCEEDED(rv)) - rv = itsURI->GetScheme(&scheme2); + rv = mURI->GetScheme(&scheme2); if (NS_SUCCEEDED(rv) && PL_strcmp(scheme1, scheme2) == 0) { if (PL_strcmp(scheme1, gFileScheme) == 0) { @@ -119,14 +137,14 @@ nsCodebasePrincipal::SameOrigin(nsIPrincipal *other, PRBool *result) rv = otherURI->GetHost(&host1); char *host2 = nsnull; if (NS_SUCCEEDED(rv)) - rv = itsURI->GetHost(&host2); + rv = mURI->GetHost(&host2); *result = NS_SUCCEEDED(rv) && PL_strcmp(host1, host2) == 0; if (*result) { int port1; rv = otherURI->GetPort(&port1); int port2; if (NS_SUCCEEDED(rv)) - rv = itsURI->GetPort(&port2); + rv = mURI->GetPort(&port2); *result = NS_SUCCEEDED(rv) && port1 == port2; } if (host1) nsCRT::free(host1); @@ -138,28 +156,32 @@ nsCodebasePrincipal::SameOrigin(nsIPrincipal *other, PRBool *result) return NS_OK; } +////////////////////////////////////////// +// Constructor, Destructor, initialization +////////////////////////////////////////// + nsCodebasePrincipal::nsCodebasePrincipal() { NS_INIT_ISUPPORTS(); - itsURI = nsnull; + mURI = nsnull; } NS_IMETHODIMP nsCodebasePrincipal::Init(nsIURI *uri) { char *codebase; - if (!NS_SUCCEEDED(uri->GetSpec(&codebase))) + if (NS_FAILED(uri->GetSpec(&codebase))) return NS_ERROR_FAILURE; - if (!NS_SUCCEEDED(itsJSPrincipals.Init(codebase))) + if (NS_FAILED(mJSPrincipals.Init(codebase))) return NS_ERROR_FAILURE; NS_ADDREF(this); - itsURI = uri; - NS_ADDREF(itsURI); + mURI = uri; + NS_ADDREF(mURI); return NS_OK; } nsCodebasePrincipal::~nsCodebasePrincipal(void) { - if (itsURI) - NS_RELEASE(itsURI); + if (mURI) + NS_RELEASE(mURI); } diff --git a/mozilla/caps/src/nsPrincipalManager.cpp b/mozilla/caps/src/nsPrincipalManager.cpp index daa10358c51..4280da04cfb 100644 --- a/mozilla/caps/src/nsPrincipalManager.cpp +++ b/mozilla/caps/src/nsPrincipalManager.cpp @@ -31,6 +31,7 @@ #include "nsIServiceManager.h" #include "nsIComponentManager.h" #include "nsIURL.h" +#include "nsCOMPtr.h" #define UNSIGNED_PRINCIPAL_KEY "4a:52:4f:53:4b:49:4e:44" #define UNKNOWN_PRINCIPAL_KEY "52:4f:53:4b:49:4e:44:4a" @@ -52,11 +53,46 @@ static NS_DEFINE_CID(kURLCID, NS_STANDARDURL_CID); NS_IMPL_ISUPPORTS(nsPrincipalManager, kIPrincipalManagerIID); -nsIPrincipal * -nsPrincipalManager::GetSystemPrincipal(void) +NS_IMETHODIMP +nsPrincipalManager::CreateCodebasePrincipal(nsIURI *url, nsIPrincipal **result) { - return theSystemPrincipal; + if (!url) + return NS_ERROR_FAILURE; + nsresult rv; + NS_WITH_SERVICE(nsIComponentManager, compMan, kComponentManagerCID, &rv); + nsCodebasePrincipal *codebasePrincipal; + rv = compMan->CreateInstance(NS_CODEBASEPRINCIPAL_PROGID, nsnull, + NS_GET_IID(nsICodebasePrincipal), + (void **) &codebasePrincipal); + if (NS_FAILED(rv)) + return NS_ERROR_FAILURE; + if (NS_FAILED(codebasePrincipal->Init(url))) { + NS_RELEASE(codebasePrincipal); + return NS_ERROR_FAILURE; + } + *result = codebasePrincipal; + NS_ADDREF(*result); + + NS_RELEASE(codebasePrincipal); + return NS_OK; } + +NS_IMETHODIMP +nsPrincipalManager::GetSystemPrincipal(nsIPrincipal **result) +{ + *result = theSystemPrincipal; + return NS_OK; +} + + + + + + + + +#if 0 + nsIPrincipal * nsPrincipalManager::GetUnsignedPrincipal(void) { @@ -86,32 +122,6 @@ nsPrincipalManager::HasSystemPrincipal(nsIPrincipalArray * prinArray) return PR_FALSE; } -NS_IMETHODIMP -nsPrincipalManager::CreateCodebasePrincipal(const char * codebaseURL, nsIURI * url, nsIPrincipal * * prin) -{ - nsresult rv; - if (!codebaseURL && !url) return NS_ERROR_FAILURE; - NS_WITH_SERVICE(nsIComponentManager, compMan, kComponentManagerCID, &rv); - if (!url) { - if (!NS_SUCCEEDED(rv)) return rv; - rv = compMan->CreateInstance(kURLCID, nsnull, NS_GET_IID(nsIURL), (void **) &url); - if (!NS_SUCCEEDED(rv)) return rv; - if (!NS_SUCCEEDED(rv = url->SetSpec((char *) codebaseURL))) { - NS_RELEASE(url); - return rv; - } - } - nsCodebasePrincipal * codebasePrin; - compMan->CreateInstance(NS_CODEBASEPRINCIPAL_PROGID, nsnull, NS_GET_IID(nsICodebasePrincipal),(void * *)& codebasePrin); - if (codebasePrin == nsnull) return NS_ERROR_OUT_OF_MEMORY; - rv = codebasePrin->Init(url); - if (!NS_SUCCEEDED(rv)) { - NS_RELEASE(codebasePrin); - return rv; - } - * prin = codebasePrin; - return NS_OK; -} NS_IMETHODIMP nsPrincipalManager::CreateCertificatePrincipal(const unsigned char * * certChain, PRUint32 * certChainLengths, PRUint32 noOfCerts, nsIPrincipal * * prin) @@ -438,3 +448,5 @@ RDF_RemovePrincipal(nsIPrincipal * prin) #endif /* ENABLE_RDF */ return found; } + +#endif \ No newline at end of file diff --git a/mozilla/caps/src/nsScriptSecurityManager.cpp b/mozilla/caps/src/nsScriptSecurityManager.cpp index 4fd01afdb02..61e2f35f8c8 100644 --- a/mozilla/caps/src/nsScriptSecurityManager.cpp +++ b/mozilla/caps/src/nsScriptSecurityManager.cpp @@ -17,7 +17,6 @@ */ #include "nsScriptSecurityManager.h" #include "nsIServiceManager.h" -#include "nsIPrincipalManager.h" #include "nsIScriptGlobalObjectData.h" #include "nsIPref.h" #include "nsIURL.h" @@ -28,8 +27,9 @@ #include "plstr.h" #include "nsCOMPtr.h" #include "nsJSPrincipals.h" +#include "nsSystemPrincipal.h" +#include "nsCodebasePrincipal.h" #include "nsCRT.h" -#include "nsXPIDLString.h" static NS_DEFINE_CID(kPrefServiceCID, NS_PREF_CID); static NS_DEFINE_CID(kURLCID, NS_STANDARDURL_CID); @@ -38,15 +38,13 @@ static NS_DEFINE_IID(kIScriptSecurityManagerIID, NS_ISCRIPTSECURITYMANAGER_IID); NS_IMPL_ISUPPORTS(nsScriptSecurityManager, kIScriptSecurityManagerIID); -static char gUnknownOrigin[] = "[unknown origin]"; static char gFileScheme[] = "file"; -static nsString gUnknownOriginStr(gUnknownOrigin); -static nsString gFileUrlPrefix("file:"); static char accessErrorMessage[] = "access disallowed from scripts at %s to documents at another domain"; nsScriptSecurityManager::nsScriptSecurityManager(void) + : mSystemPrincipal(nsnull) { NS_INIT_REFCNT(); } @@ -75,12 +73,16 @@ nsScriptSecurityManager::CheckScriptAccess(nsIScriptContext *aContext, JSContext *cx = (JSContext *)aContext->GetNativeContext(); PRInt32 secLevel = GetSecurityLevel(cx, (char *) aProp, nsnull); switch (secLevel) { - case SCRIPT_SECURITY_ALL_ACCESS: + case SCRIPT_SECURITY_ALL_ACCESS: *aResult = PR_TRUE; return NS_OK; - case SCRIPT_SECURITY_SAME_DOMAIN_ACCESS: - return CheckPermissions(cx, (JSObject *) aObj, eJSTarget_Max, aResult); - default: + case SCRIPT_SECURITY_SAME_DOMAIN_ACCESS: { + const char *cap = isWrite + ? "UniversalBrowserWrite" + : "UniversalBrowserRead"; + return CheckPermissions(cx, (JSObject *) aObj, cap, aResult); + } + default: // Default is no access *aResult = PR_FALSE; return NS_OK; @@ -88,27 +90,204 @@ nsScriptSecurityManager::CheckScriptAccess(nsIScriptContext *aContext, } NS_IMETHODIMP -nsScriptSecurityManager::CanAccessTarget(JSContext *aCx, PRInt16 aTarget, - PRBool *aReturn) +nsScriptSecurityManager::CheckURI(nsIScriptContext *aContext, + nsIURI *aURI, + PRBool *aResult) { #if 0 - JSPrincipals *principals; - *aReturn = PR_TRUE; - GetSubjectPrincipal(aCx, &principals); - if ((nsCapsGetRegistrationModeFlag()) && principals && - (NET_URL_Type(principals->codebase) == FILE_TYPE_URL)) + nsXPIDLCString scheme; + if (NS_FAILED(aURI->GetScheme(getter_Copies(scheme))) + return NS_ERROR_FAILURE; + if (nsCRT::strcmp(scheme, "http") == 0 || + nsCRT::strcmp(scheme, "https") == 0 || + nsCRT::strcmp(scheme, "ftp") == 0 || + nsCRT::strcmp(scheme, "mailto") == 0 || + nsCRT::strcmp(scheme, "news") == 0) { + *aResult = PR_TRUE; return NS_OK; - } else if (principals && !principals->globalPrivilegesEnabled(aCx, principals)) { - *aReturn = PR_FALSE; } - // only if signed scripts - else if (!this->PrincipalsCanAccessTarget(aCx, aTarget)) { - *aReturn = PR_FALSE; + if (nsCRT::strcmp(scheme, "file") == 0) { + JSContext *cx = (JSContext*) (*aContext)->GetNativeContext(); + nsCOMPtr principal; + if (NS_FAILED(GetSubjectPrincipal(cx, getter_AddRefs(principal))) + return NS_ERROR_FAILURE; + nsCOMPtr codebase; + if (NS_SUCCEEDED(principal->QueryInterface( + NS_GET_IID(nsICodebasePrincipal), + (void **) getter_AddRefs(codebase)))) + { + nsCOMPtr uri; + if (NS_SUCCEEDED(codebase->GetURI(getter_AddRefs(uri))) { + nsXPIDLCString scheme2; + if (NS_SUCCEEDED(uri->GetScheme(getter_Copies(scheme2)) && + nsCRT::strcmp(scheme2, "file") == 0) + { + *aResult = PR_TRUE; + return NS_OK; + } + } + } + if (NS_FAILED(principal->CanAccess("UniversalFileRead", aResult)) + return NS_ERROR_FAILURE; + return NS_OK; } -#else - *aReturn = PR_FALSE; + + + #endif + *aResult = PR_TRUE; + return NS_OK; +} + +#if 0 +// temporary: for reference +const char * +lm_CheckURL(JSContext *cx, const char *url_string, JSBool checkFile) +{ + char *protocol, *absolute; + JSObject *obj; + MochaDecoder *decoder; + + protocol = NET_ParseURL(url_string, GET_PROTOCOL_PART); + if (!protocol || *protocol == '\0' || XP_STRCHR(protocol, '?')) { + lo_TopState *top_state; + + obj = JS_GetGlobalObject(cx); + decoder = JS_GetPrivate(cx, obj); + + LO_LockLayout(); + top_state = lo_GetMochaTopState(decoder->window_context); + if (top_state && top_state->base_url) { + absolute = NET_MakeAbsoluteURL(top_state->base_url, + (char *)url_string); /*XXX*/ + /* + * Temporarily unlock layout so that we don't hold the lock + * across a call (lm_CheckPermissions) that may result in + * synchronous event handling. + */ + LO_UnlockLayout(); + if (!lm_CheckPermissions(cx, obj, + JSTARGET_UNIVERSAL_BROWSER_READ)) + { + /* Don't leak information about the url of this page. */ + XP_FREEIF(absolute); + return NULL; + } + LO_LockLayout(); + } else { + absolute = NULL; + } + if (absolute) { + if (protocol) XP_FREE(protocol); + protocol = NET_ParseURL(absolute, GET_PROTOCOL_PART); + } + LO_UnlockLayout(); + } else { + absolute = JS_strdup(cx, url_string); + if (!absolute) { + XP_FREE(protocol); + return NULL; + } + decoder = NULL; + } + + if (absolute) { + + /* Make sure it's a safe URL type. */ + switch (NET_URL_Type(protocol)) { + case FILE_TYPE_URL: + if (checkFile) { + const char *subjectOrigin = lm_GetSubjectOriginURL(cx); + if (subjectOrigin == NULL) { + XP_FREE(protocol); + return NULL; + } + if (NET_URL_Type(subjectOrigin) != FILE_TYPE_URL && + !lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_FILE_READ)) + { + XP_FREE(absolute); + absolute = NULL; + } + } + break; + case FTP_TYPE_URL: + case GOPHER_TYPE_URL: + case HTTP_TYPE_URL: + case MAILTO_TYPE_URL: + case NEWS_TYPE_URL: + case RLOGIN_TYPE_URL: + case TELNET_TYPE_URL: + case TN3270_TYPE_URL: + case WAIS_TYPE_URL: + case SECURE_HTTP_TYPE_URL: + case URN_TYPE_URL: + case NFS_TYPE_URL: + case MOCHA_TYPE_URL: + case VIEW_SOURCE_TYPE_URL: + case NETHELP_TYPE_URL: + case WYSIWYG_TYPE_URL: + case LDAP_TYPE_URL: +#ifdef JAVA +/* DHIREN */ + case MARIMBA_TYPE_URL: +/* ~DHIREN */ +#endif + /* These are "safe". */ + break; + case ABOUT_TYPE_URL: + if (XP_STRCASECMP(absolute, "about:blank") == 0) + break; + if (XP_STRNCASECMP(absolute, "about:pics", 10) == 0) + break; + /* these are OK if we are signed */ + if (lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_BROWSER_READ)) + break; + /* FALL THROUGH */ + default: + /* All others are naughty. */ + /* XXX signing - should we allow these for signed scripts? */ + XP_FREE(absolute); + absolute = NULL; + break; + } + } + + if (!absolute) { + JS_ReportError(cx, "illegal URL method '%s'", + protocol && *protocol ? protocol : url_string); + } + if (protocol) + XP_FREE(protocol); + return absolute; +} +#endif + +NS_IMETHODIMP +nsScriptSecurityManager::GetSystemPrincipal(nsIPrincipal **result) +{ + if (!mSystemPrincipal) { + mSystemPrincipal = new nsSystemPrincipal(); + if (!mSystemPrincipal) + return NS_ERROR_OUT_OF_MEMORY; + NS_ADDREF(mSystemPrincipal); + } + *result = mSystemPrincipal; + NS_ADDREF(*result); + return NS_OK; +} + +NS_IMETHODIMP +nsScriptSecurityManager::CreateCodebasePrincipal(nsIURI *aURI, + nsIPrincipal **result) +{ + nsCOMPtr codebase = new nsCodebasePrincipal(); + if (!codebase) + return NS_ERROR_OUT_OF_MEMORY; + if (NS_FAILED(codebase->Init(aURI))) + return NS_ERROR_FAILURE; + *result = codebase; + NS_ADDREF(*result); return NS_OK; } @@ -156,14 +335,17 @@ nsScriptSecurityManager::GetSubjectPrincipal(JSContext *aCx, principals = JVM_GetJavaPrincipalsFromStack(pFrameToStartLooking); if (principals && principals->codebase) { // create new principals + /* nsresult rv; NS_WITH_SERVICE(nsIPrincipalManager, prinMan, NS_PRINCIPALMANAGER_PROGID, &rv); + // NB TODO: create nsIURI to pass in if (NS_SUCCEEDED(rv)) rv = prinMan->CreateCodebasePrincipal(principals->codebase, nsnull, result); if (NS_SUCCEEDED(rv)) return NS_OK; + */ } #endif // Couldn't find principals. @@ -196,8 +378,12 @@ nsScriptSecurityManager::GetObjectPrincipal(JSContext *aCx, JSObject *aObj, NS_IMETHODIMP nsScriptSecurityManager::CheckPermissions(JSContext *aCx, JSObject *aObj, - PRInt16 aTarget, PRBool* aReturn) + const char *aCapability, + PRBool* aReturn) { + /* + ** Get origin of subject and object and compare. + */ nsCOMPtr subject; if (NS_FAILED(GetSubjectPrincipal(aCx, getter_AddRefs(subject)))) return NS_ERROR_FAILURE; @@ -207,40 +393,36 @@ nsScriptSecurityManager::CheckPermissions(JSContext *aCx, JSObject *aObj, return NS_ERROR_FAILURE; nsCOMPtr subjectCodebase; - if (NS_FAILED(subject->QueryInterface( + if (NS_SUCCEEDED(subject->QueryInterface( NS_GET_IID(nsICodebasePrincipal), (void **) getter_AddRefs(subjectCodebase)))) { - return NS_ERROR_FAILURE; - } - if (NS_FAILED(subjectCodebase->SameOrigin(object, aReturn))) - return NS_ERROR_FAILURE; + if (NS_FAILED(subjectCodebase->SameOrigin(object, aReturn))) + return NS_ERROR_FAILURE; - if (*aReturn) - return NS_OK; + if (*aReturn) + return NS_OK; + } /* ** If we failed the origin tests it still might be the case that we ** are a signed script and have permissions to do this operation. ** Check for that here */ - if (aTarget != eJSTarget_Max) { - PRBool canAccess; - CanAccessTarget(aCx, aTarget, &canAccess); - if (canAccess) { - *aReturn = PR_TRUE; - return NS_OK; - } - } + if (NS_FAILED(subject->CanAccess(aCapability, aReturn))) + return NS_ERROR_FAILURE; + if (*aReturn) + return NS_OK; + /* + ** Access tests failed, so now report error. + */ nsCOMPtr uri; if (NS_FAILED(subjectCodebase->GetURI(getter_AddRefs(uri)))) return NS_ERROR_FAILURE; - char *spec; if (NS_FAILED(uri->GetSpec(&spec))) return NS_ERROR_FAILURE; - JS_ReportError(aCx, accessErrorMessage, spec); nsCRT::free(spec); *aReturn = PR_FALSE; diff --git a/mozilla/caps/src/nsSecurityManagerFactory.cpp b/mozilla/caps/src/nsSecurityManagerFactory.cpp index 40d70f02fd1..19e703b0d0c 100644 --- a/mozilla/caps/src/nsSecurityManagerFactory.cpp +++ b/mozilla/caps/src/nsSecurityManagerFactory.cpp @@ -21,12 +21,11 @@ #include "nsIServiceManager.h" #include "nsISupports.h" #include "nsIGenericFactory.h" -#include "nsICapsManager.h" -#include "nsCCapsManager.h" -#include "nsIPrincipalManager.h" -#include "nsPrincipalManager.h" -#include "nsIPrivilegeManager.h" -#include "nsPrivilegeManager.h" +//#include "nsICapsManager.h" +//#include "nsCCapsManager.h" +//#include "nsPrincipalManager.h" +//#include "nsIPrivilegeManager.h" +//#include "nsPrivilegeManager.h" #include "nsIScriptSecurityManager.h" #include "nsScriptSecurityManager.h" #include "nsIPrincipal.h" @@ -35,38 +34,28 @@ //static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID); static NS_DEFINE_CID(kComponentManagerCID, NS_COMPONENTMANAGER_CID); static NS_DEFINE_CID(kGenericFactoryCID, NS_GENERICFACTORY_CID); -static NS_DEFINE_CID(kCCapsManagerCID, NS_CCAPSMANAGER_CID); +//static NS_DEFINE_CID(kCCapsManagerCID, NS_CCAPSMANAGER_CID); NS_GENERIC_FACTORY_CONSTRUCTOR(nsCodebasePrincipal) static NS_IMETHODIMP -Construct_nsIScriptSecurityManager(nsISupports * aOuter, REFNSIID aIID, void * * aResult) +Construct_nsIScriptSecurityManager(nsISupports *aOuter, REFNSIID aIID, + void **aResult) { - nsresult rv; - nsISupports *obj; - if(!aResult) - { - rv = NS_ERROR_NULL_POINTER; - goto done; - } - *aResult = NULL; - if(aOuter) - { - rv = NS_ERROR_NO_AGGREGATION; - goto done; - } - obj = nsScriptSecurityManager::GetScriptSecurityManager(); - if(!obj) - { - rv = NS_ERROR_OUT_OF_MEMORY; - goto done; - } - rv = obj->QueryInterface(aIID, aResult); - NS_ASSERTION(NS_SUCCEEDED(rv), "unable to find correct interface"); -done: - return rv; + if (!aResult) + return NS_ERROR_NULL_POINTER; + *aResult = nsnull; + if (aOuter) + return NS_ERROR_NO_AGGREGATION; + nsISupports *obj = nsScriptSecurityManager::GetScriptSecurityManager(); + if (!obj) + return NS_ERROR_OUT_OF_MEMORY; + if (NS_FAILED(obj->QueryInterface(aIID, aResult))) + return NS_ERROR_FAILURE; + return NS_OK; } + static NS_IMETHODIMP Construct_nsISecurityManager(nsISupports * aOuter, REFNSIID aIID, void * * aResult) { @@ -83,7 +72,7 @@ Construct_nsISecurityManager(nsISupports * aOuter, REFNSIID aIID, void * * aResu rv = NS_ERROR_NO_AGGREGATION; goto done; } - obj = nsCCapsManager::GetSecurityManager(); + obj = nsnull; // nsCCapsManager::GetSecurityManager(); if(!obj) { rv = NS_ERROR_OUT_OF_MEMORY; @@ -111,7 +100,7 @@ Construct_nsIPrivilegeManager(nsISupports * aOuter, REFNSIID aIID, void * * aRes rv = NS_ERROR_NO_AGGREGATION; goto done; } - obj = nsPrivilegeManager::GetPrivilegeManager(); + obj = nsnull; /// nsPrivilegeManager::GetPrivilegeManager(); if(!obj) { rv = NS_ERROR_OUT_OF_MEMORY; @@ -123,6 +112,7 @@ done: return rv; } +/* static NS_IMETHODIMP Construct_nsIPrincipalManager(nsISupports * aOuter, REFNSIID aIID, void * * aResult) { @@ -131,79 +121,135 @@ Construct_nsIPrincipalManager(nsISupports * aOuter, REFNSIID aIID, void * * aRes if(!aResult) return NS_ERROR_NULL_POINTER; *aResult = NULL; if(aOuter) return NS_ERROR_NO_AGGREGATION; - rv = nsPrincipalManager::GetPrincipalManager(&obj); + rv = nsnull; //nsPrincipalManager::GetPrincipalManager(&obj); if(!obj) return NS_ERROR_OUT_OF_MEMORY; if(NS_FAILED(rv)) return rv; rv = obj->QueryInterface(aIID, aResult); NS_ASSERTION(NS_SUCCEEDED(rv), "unable to find correct interface"); return rv; } +*/ extern "C" PR_IMPLEMENT(nsresult) -NSGetFactory(nsISupports * aServMgr, const nsCID & aClass, const char * aClassName, - const char * aProgID, nsIFactory * * aFactory) +NSGetFactory(nsISupports *aServMgr, const nsCID &aClass, + const char *aClassName, const char *aProgID, + nsIFactory **aFactory) { - nsresult rv; - NS_ASSERTION(aFactory != nsnull, "bad factory pointer"); - NS_WITH_SERVICE1(nsIComponentManager, compMgr, aServMgr, kComponentManagerCID,& rv); - if (NS_FAILED(rv)) return rv; - nsIGenericFactory * factory; - rv = compMgr->CreateInstance(kGenericFactoryCID, nsnull,NS_GET_IID(nsIGenericFactory), (void * *)& factory); - if (NS_FAILED(rv)) return rv; - if(aClass.Equals(kCCapsManagerCID)) rv = factory->SetConstructor(Construct_nsISecurityManager); - else if(aClass.Equals(nsPrivilegeManager::GetCID())) rv = factory->SetConstructor(Construct_nsIPrivilegeManager); - else if(aClass.Equals(nsPrincipalManager::GetCID())) rv = factory->SetConstructor(Construct_nsIPrincipalManager); - else if(aClass.Equals(nsScriptSecurityManager::GetCID())) rv = factory->SetConstructor(Construct_nsIScriptSecurityManager); - else if(aClass.Equals(nsCodebasePrincipal::GetCID())) rv = factory->SetConstructor(nsCodebasePrincipalConstructor); - else { - NS_ASSERTION(0, "incorrectly registered"); - rv = NS_ERROR_NO_INTERFACE; - } - if (NS_FAILED(rv)) { - NS_RELEASE(factory); - return rv; - } - * aFactory = factory; - return NS_OK; + NS_ASSERTION(aFactory != nsnull, "bad factory pointer"); + nsresult rv; + NS_WITH_SERVICE1(nsIComponentManager, compMgr, aServMgr, + kComponentManagerCID, &rv); + if (NS_FAILED(rv)) + return NS_ERROR_FAILURE; + nsIGenericFactory *factory; + rv = compMgr->CreateInstance(kGenericFactoryCID, nsnull, + NS_GET_IID(nsIGenericFactory), + (void **) &factory); + if (NS_FAILED(rv)) + return NS_ERROR_FAILURE; + if (aClass.Equals(nsScriptSecurityManager::GetCID())) + rv = factory->SetConstructor(Construct_nsIScriptSecurityManager); + else if (aClass.Equals(nsCodebasePrincipal::GetCID())) + rv = factory->SetConstructor(nsCodebasePrincipalConstructor); + /* + else if (aClass.Equals(kCCapsManagerCID)) + rv = factory->SetConstructor(Construct_nsISecurityManager); + else if (aClass.Equals(nsPrivilegeManager::GetCID())) + rv = factory->SetConstructor(Construct_nsIPrivilegeManager); + else if (aClass.Equals(nsPrincipalManager::GetCID())) + rv = factory->SetConstructor(Construct_nsIPrincipalManager); + */ + else { + NS_ASSERTION(0, "incorrectly registered"); + rv = NS_ERROR_NO_INTERFACE; + } + if (NS_FAILED(rv)) { + NS_RELEASE(factory); + return NS_ERROR_FAILURE; + } + *aFactory = factory; + return NS_OK; } /***************************************************************************/ extern "C" NS_EXPORT PRBool -NSCanUnload(nsISupports* aServMgr) +NSCanUnload(nsISupports *aServMgr) { return PR_FALSE; } extern "C" NS_EXPORT nsresult -NSRegisterSelf(nsISupports * aServMgr, const char * aPath) +NSRegisterSelf(nsISupports *aServMgr, const char *aPath) { - nsresult rv; #ifdef DEBUG - printf("***Registering Security***\n"); + printf("***Registering Security***\n"); #endif - NS_WITH_SERVICE1(nsIComponentManager, compMgr, aServMgr, kComponentManagerCID,& rv); - if (NS_FAILED(rv)) return rv; - rv = compMgr->RegisterComponent(kCCapsManagerCID,NS_CCAPSMANAGER_CLASSNAME,NS_CCAPSMANAGER_PROGID, aPath, PR_TRUE, PR_TRUE); - rv = compMgr->RegisterComponent(nsPrivilegeManager::GetCID(),NS_PRIVILEGEMANAGER_CLASSNAME,NS_PRIVILEGEMANAGER_PROGID, aPath, PR_TRUE, PR_TRUE); - rv = compMgr->RegisterComponent(nsPrincipalManager::GetCID(),NS_PRINCIPALMANAGER_CLASSNAME,NS_PRINCIPALMANAGER_PROGID, aPath, PR_TRUE, PR_TRUE); - rv = compMgr->RegisterComponent(nsScriptSecurityManager::GetCID(),NS_SCRIPTSECURITYMANAGER_CLASSNAME,NS_SCRIPTSECURITYMANAGER_PROGID, aPath, PR_TRUE, PR_TRUE); - rv = compMgr->RegisterComponent(nsCodebasePrincipal::GetCID(),NS_CODEBASEPRINCIPAL_CLASSNAME,NS_CODEBASEPRINCIPAL_PROGID, aPath, PR_TRUE, PR_TRUE); - return rv; + nsresult rv; + NS_WITH_SERVICE1(nsIComponentManager, compMgr, aServMgr, + kComponentManagerCID, &rv); + if (NS_FAILED(rv)) + return NS_ERROR_FAILURE; + rv = compMgr->RegisterComponent(nsScriptSecurityManager::GetCID(), + NS_SCRIPTSECURITYMANAGER_CLASSNAME, + NS_SCRIPTSECURITYMANAGER_PROGID, aPath, + PR_TRUE, PR_TRUE); + if (NS_FAILED(rv)) + return NS_ERROR_FAILURE; + rv = compMgr->RegisterComponent(nsCodebasePrincipal::GetCID(), + NS_CODEBASEPRINCIPAL_CLASSNAME, + NS_CODEBASEPRINCIPAL_PROGID, aPath, + PR_TRUE, PR_TRUE); + if (NS_FAILED(rv)) + return NS_ERROR_FAILURE; + /* + rv = compMgr->RegisterComponent(kCCapsManagerCID, NS_CCAPSMANAGER_CLASSNAME, + NS_CCAPSMANAGER_PROGID, aPath, PR_TRUE, + PR_TRUE); + if (NS_FAILED(rv)) + return NS_ERROR_FAILURE; + rv = compMgr->RegisterComponent(nsPrivilegeManager::GetCID(), + NS_PRIVILEGEMANAGER_CLASSNAME, + NS_PRIVILEGEMANAGER_PROGID, aPath, + PR_TRUE, PR_TRUE); + if (NS_FAILED(rv)) + return NS_ERROR_FAILURE; + rv = compMgr->RegisterComponent(nsPrincipalManager::GetCID(), + NS_PRINCIPALMANAGER_CLASSNAME, + NS_PRINCIPALMANAGER_PROGID, aPath, + PR_TRUE, PR_TRUE); + */ + if (NS_FAILED(rv)) + return NS_ERROR_FAILURE; + return NS_OK; } extern "C" NS_EXPORT nsresult -NSUnregisterSelf(nsISupports * aServMgr, const char * aPath) +NSUnregisterSelf(nsISupports *aServMgr, const char *aPath) { - nsresult rv; #ifdef DEBUG printf("*** Unregistering Security***\n"); #endif - NS_WITH_SERVICE1(nsIComponentManager, compMgr, aServMgr, kComponentManagerCID,& rv); - if (NS_FAILED(rv)) return rv; - rv = compMgr->UnregisterComponent(kCCapsManagerCID, aPath); - rv = compMgr->UnregisterComponent(nsPrivilegeManager::GetCID(), aPath); - rv = compMgr->UnregisterComponent(nsPrincipalManager::GetCID(), aPath); + nsresult rv; + NS_WITH_SERVICE1(nsIComponentManager, compMgr, aServMgr, + kComponentManagerCID, &rv); + if (NS_FAILED(rv)) + return NS_ERROR_FAILURE; rv = compMgr->UnregisterComponent(nsScriptSecurityManager::GetCID(), aPath); + if (NS_FAILED(rv)) + return NS_ERROR_FAILURE; rv = compMgr->UnregisterComponent(nsCodebasePrincipal::GetCID(), aPath); - return rv; + if (NS_FAILED(rv)) + return NS_ERROR_FAILURE; + /* + rv = compMgr->UnregisterComponent(kCCapsManagerCID, aPath); + if (NS_FAILED(rv)) + return NS_ERROR_FALURE; + rv = compMgr->UnregisterComponent(nsPrivilegeManager::GetCID(), aPath); + if (NS_FAILED(rv)) + return NS_ERROR_FALURE; + rv = compMgr->UnregisterComponent(nsPrincipalManager::GetCID(), aPath); + if (NS_FAILED(rv)) + return NS_ERROR_FALURE; + */ + return NS_OK; } diff --git a/mozilla/caps/src/nsSystemPrincipal.cpp b/mozilla/caps/src/nsSystemPrincipal.cpp new file mode 100644 index 00000000000..8d97e170c24 --- /dev/null +++ b/mozilla/caps/src/nsSystemPrincipal.cpp @@ -0,0 +1,94 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape Public License + * Version 1.0 (the "NPL"); you may not use this file except in + * compliance with the NPL. You may obtain a copy of the NPL at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the NPL is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * for the specific language governing rights and limitations under the + * NPL. + * + * The Initial Developer of this code under the NPL is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1999 Netscape Communications Corporation. All Rights + * Reserved. + */ + +/* The privileged system principal. */ + +#include "nsSystemPrincipal.h" +#include "nsIComponentManager.h" +#include "nsIServiceManager.h" +#include "nsIURL.h" +#include "nsCOMPtr.h" +#include "nsXPIDLString.h" + + +static NS_DEFINE_IID(kIPrincipalIID, NS_IPRINCIPAL_IID); +NS_IMPL_ISUPPORTS(nsSystemPrincipal, kIPrincipalIID); + +//////////////////////////////////// +// Methods implementing nsIPrincipal +//////////////////////////////////// + +NS_IMETHODIMP +nsSystemPrincipal::ToString(char **result) +{ + // NB TODO + return NS_OK; +} + +NS_IMETHODIMP +nsSystemPrincipal::Equals(nsIPrincipal *other, PRBool *result) +{ + *result = (other == this); + return NS_OK; +} + +NS_IMETHODIMP +nsSystemPrincipal::GetJSPrincipals(JSPrincipals **jsprin) +{ + if (mJSPrincipals.nsIPrincipalPtr == nsnull) { + mJSPrincipals.nsIPrincipalPtr = this; + NS_ADDREF(mJSPrincipals.nsIPrincipalPtr); + // matching release in nsDestroyJSPrincipals + } + *jsprin = &mJSPrincipals; + JSPRINCIPALS_HOLD(cx, *jsprin); + return NS_OK; +} + +NS_IMETHODIMP +nsSystemPrincipal::CanAccess(const char *capability, PRBool *result) +{ + // The system principal has all privileges. + *result = PR_TRUE; + return NS_OK; +} + + +////////////////////////////////////////// +// Constructor, Destructor, initialization +////////////////////////////////////////// + +nsSystemPrincipal::nsSystemPrincipal() +{ + NS_INIT_ISUPPORTS(); +} + +NS_IMETHODIMP +nsSystemPrincipal::Init() +{ + char *codebase = nsCRT::strdup("[System Principal]"); + if (!codebase) + return NS_ERROR_OUT_OF_MEMORY; + if (NS_FAILED(mJSPrincipals.Init(codebase))) + return NS_ERROR_FAILURE; + return NS_OK; +} + +nsSystemPrincipal::~nsSystemPrincipal(void) +{ +} diff --git a/mozilla/chrome/src/nsChromeProtocolHandler.cpp b/mozilla/chrome/src/nsChromeProtocolHandler.cpp index 8437f2858af..4dfcfbd9273 100644 --- a/mozilla/chrome/src/nsChromeProtocolHandler.cpp +++ b/mozilla/chrome/src/nsChromeProtocolHandler.cpp @@ -26,7 +26,7 @@ #include "nsIChannel.h" #include "nsIChromeRegistry.h" #include "nsCOMPtr.h" -#include "nsIPrincipalManager.h" +#include "nsIScriptSecurityManager.h" static NS_DEFINE_CID(kStandardURLCID, NS_STANDARDURL_CID); static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); @@ -177,13 +177,13 @@ nsChromeProtocolHandler::NewChannel(const char* verb, nsIURI* uri, // Create a special principal for chrome and set the creator property // of the result if (NS_SUCCEEDED(rv)) { - NS_WITH_SERVICE(nsIPrincipalManager, prinMan, - NS_PRINCIPALMANAGER_PROGID, &rv); - if (NS_FAILED(rv)) + nsresult rv2; + NS_WITH_SERVICE(nsIScriptSecurityManager, securityManager, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv2); + if (NS_FAILED(rv2)) return NS_ERROR_FAILURE; nsCOMPtr principal; - if (NS_FAILED(prinMan->CreateCodebasePrincipal(nsnull, chromeURI, - getter_AddRefs(principal)))) + if (NS_FAILED(securityManager->GetSystemPrincipal(getter_AddRefs(principal)))) { return NS_ERROR_FAILURE; } diff --git a/mozilla/dom/src/base/nsGlobalWindow.cpp b/mozilla/dom/src/base/nsGlobalWindow.cpp index 141e638e7d4..d0038ed343c 100644 --- a/mozilla/dom/src/base/nsGlobalWindow.cpp +++ b/mozilla/dom/src/base/nsGlobalWindow.cpp @@ -83,8 +83,6 @@ static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); #include "nsMimeTypeArray.h" #include "nsPluginArray.h" -#include "nsIPrincipalManager.h" - #include "jsapi.h" static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID); @@ -2958,13 +2956,13 @@ GlobalWindowImpl::GetPrincipal(nsIPrincipal **result) return NS_ERROR_FAILURE; nsresult rv; - NS_WITH_SERVICE(nsIPrincipalManager, prinMan, - NS_PRINCIPALMANAGER_PROGID, &rv); + NS_WITH_SERVICE(nsIScriptSecurityManager, securityManager, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); if (NS_FAILED(rv)) - return NS_ERROR_FAILURE; - - if (NS_FAILED(prinMan->CreateCodebasePrincipal(nsnull, uri, &mPrincipal))) - return NS_ERROR_FAILURE; + return NS_ERROR_FAILURE; + nsCOMPtr principal; + if (NS_FAILED(securityManager->CreateCodebasePrincipal(uri, &mPrincipal))) + return NS_ERROR_FAILURE; } NS_ADDREF(mPrincipal); } diff --git a/mozilla/dom/src/base/nsLocation.cpp b/mozilla/dom/src/base/nsLocation.cpp index e3ea8e1cf44..ee1a91092d4 100644 --- a/mozilla/dom/src/base/nsLocation.cpp +++ b/mozilla/dom/src/base/nsLocation.cpp @@ -424,23 +424,25 @@ LocationImpl::SetHrefWithBase(const nsString& aHref, } if ((NS_OK == result) && (nsnull != mWebShell)) { +#if 0 + // Get JSContext from stack + NS_WITH_SERVICE(nsIJSContextStack, stack, "nsThreadJSContextStack", + &result); + if (NS_FAILED(result)) + return NS_ERROR_FAILURE; + JSContext *cx = stack.Peek(); -#if 0 // need to find a way to get a JSContext - PRBool ok = PR_FALSE; - nsIScriptContext *scriptCX; - nsIScriptSecurityManager *secMan; + // Get security manager + nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); + nsCOMPtr secMan; + if (NS_FAILED(scriptCX->GetSecurityManager(getter_AddRefs(secMan)))) + return NS_ERROR_FAILURE; // Check to see if URI is legal. - scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - if (!NS_SUCCEEDED(result = scriptCX->GetSecurityManager(&secMan)) || - !NS_SUCCEEDED(result = secMan->CheckURI(&newHref, aBase, PR_TRUE, &ok))) - return result; - if (!ok) { - // TODO: report error - return NS_ERROR_FAILURE; // TODO: get security error code - } + PRBool ok = PR_FALSE; + if (NS_FAILED(secMan->CheckURI(scriptCX, newUrl, &ok) || !ok)) + return NS_ERROR_FAILURE; #endif - result = mWebShell->LoadURL(newHref.GetUnicode(), nsnull, aReplace); } diff --git a/mozilla/modules/oji/public/nsjvm.h b/mozilla/modules/oji/public/nsjvm.h index 50d5b44d18d..f9889f306d0 100644 --- a/mozilla/modules/oji/public/nsjvm.h +++ b/mozilla/modules/oji/public/nsjvm.h @@ -38,7 +38,6 @@ #include "nsIJVMPluginTagInfo.h" #include "nsISymantecDebugManager.h" #include "nsISymantecDebugger.h" -#include "nsICapsManager.h" #include "nsILiveconnect.h" #include "nsIThreadManager.h" diff --git a/mozilla/modules/oji/src/lcglue.cpp b/mozilla/modules/oji/src/lcglue.cpp index bb56528f724..7da7a91b899 100644 --- a/mozilla/modules/oji/src/lcglue.cpp +++ b/mozilla/modules/oji/src/lcglue.cpp @@ -27,7 +27,6 @@ #include "nsJVMManager.h" #include "nsIPluginInstancePeer2.h" //#include "npglue.h" -#include "nsCCapsManager.h" #include "prinrval.h" #include "ProxyJNI.h" #include "prcmon.h" diff --git a/mozilla/modules/oji/src/nsJVMManager.cpp b/mozilla/modules/oji/src/nsJVMManager.cpp index c0bb20af201..e4e692d4f46 100644 --- a/mozilla/modules/oji/src/nsJVMManager.cpp +++ b/mozilla/modules/oji/src/nsJVMManager.cpp @@ -36,7 +36,6 @@ #include "jsdbgapi.h" #include "libmocha.h" #include "libevent.h" -#include "nsCCapsManager.h" #include "prinrval.h" #include "ProxyJNI.h" #include "prcmon.h" diff --git a/mozilla/rdf/chrome/src/nsChromeProtocolHandler.cpp b/mozilla/rdf/chrome/src/nsChromeProtocolHandler.cpp index 8437f2858af..4dfcfbd9273 100644 --- a/mozilla/rdf/chrome/src/nsChromeProtocolHandler.cpp +++ b/mozilla/rdf/chrome/src/nsChromeProtocolHandler.cpp @@ -26,7 +26,7 @@ #include "nsIChannel.h" #include "nsIChromeRegistry.h" #include "nsCOMPtr.h" -#include "nsIPrincipalManager.h" +#include "nsIScriptSecurityManager.h" static NS_DEFINE_CID(kStandardURLCID, NS_STANDARDURL_CID); static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); @@ -177,13 +177,13 @@ nsChromeProtocolHandler::NewChannel(const char* verb, nsIURI* uri, // Create a special principal for chrome and set the creator property // of the result if (NS_SUCCEEDED(rv)) { - NS_WITH_SERVICE(nsIPrincipalManager, prinMan, - NS_PRINCIPALMANAGER_PROGID, &rv); - if (NS_FAILED(rv)) + nsresult rv2; + NS_WITH_SERVICE(nsIScriptSecurityManager, securityManager, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv2); + if (NS_FAILED(rv2)) return NS_ERROR_FAILURE; nsCOMPtr principal; - if (NS_FAILED(prinMan->CreateCodebasePrincipal(nsnull, chromeURI, - getter_AddRefs(principal)))) + if (NS_FAILED(securityManager->GetSystemPrincipal(getter_AddRefs(principal)))) { return NS_ERROR_FAILURE; } diff --git a/mozilla/webshell/tests/viewer/nsSetupRegistry.cpp b/mozilla/webshell/tests/viewer/nsSetupRegistry.cpp index dfa854217ed..39e4ff50283 100644 --- a/mozilla/webshell/tests/viewer/nsSetupRegistry.cpp +++ b/mozilla/webshell/tests/viewer/nsSetupRegistry.cpp @@ -37,7 +37,6 @@ #include "nsIIOService.h" #endif // NECKO #ifdef OJI -#include "nsICapsManager.h" #include "nsILiveconnect.h" #endif #include "nsIPluginManager.h" @@ -203,7 +202,6 @@ static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); static NS_DEFINE_IID(kCPluginHostCID, NS_PLUGIN_HOST_CID); static NS_DEFINE_CID(kCPluginManagerCID, NS_PLUGINMANAGER_CID); #ifdef OJI -static NS_DEFINE_CID(kCapsManagerCID, NS_CCAPSMANAGER_CID); static NS_DEFINE_CID(kCLiveconnectCID, NS_CLIVECONNECT_CID); #endif @@ -404,7 +402,6 @@ NS_SetupRegistry() nsComponentManager::RegisterComponentLib(kCPluginManagerCID, NULL, NULL, PLUGIN_DLL, PR_FALSE, PR_FALSE); #ifdef OJI - nsComponentManager::RegisterComponentLib(kCapsManagerCID, NULL, NULL, CAPS_DLL, PR_FALSE, PR_FALSE); nsComponentManager::RegisterComponentLib(kCLiveconnectCID, NULL, NULL, LIVECONNECT_DLL, PR_FALSE, PR_FALSE); #endif }