diff --git a/esc-1.1.0-fix14.patch b/esc-1.1.0-fix14.patch new file mode 100644 index 0000000..f3c048d --- /dev/null +++ b/esc-1.1.0-fix14.patch @@ -0,0 +1,458 @@ +diff -up ./esc/coreconf/Linux3.3.mk.fix14 ./esc/coreconf/Linux3.3.mk +--- ./esc/coreconf/Linux3.3.mk.fix14 2012-05-10 15:09:37.298143842 -0700 ++++ ./esc/coreconf/Linux3.3.mk 2012-05-10 15:09:37.298143842 -0700 +@@ -0,0 +1,35 @@ ++# BEGIN COPYRIGHT BLOCK ++# This Program is free software; you can redistribute it and/or modify it under ++# the terms of the GNU General Public License as published by the Free Software ++# Foundation; version 2 of the License. ++# ++# This Program is distributed in the hope that it will be useful, but WITHOUT ++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS ++# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License along with ++# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple ++# Place, Suite 330, Boston, MA 02111-1307 USA. ++# ++# Copyright (C) 2005 Red Hat, Inc. ++# All rights reserved. ++# END COPYRIGHT BLOCK ++ ++# ++# Config stuff for Linux 3.3 (ELF) ++# ++ ++include $(CORE_DEPTH)/coreconf/Linux.mk ++ ++OS_REL_CFLAGS += -DLINUX2_1 ++MKSHLIB = $(CC) -shared -Wl,-soname -Wl,$(@:$(OBJDIR)/%.so=%.so) ++ifdef BUILD_OPT ++ OPTIMIZER = -O2 ++endif ++ ++ifdef MAPFILE ++ MKSHLIB += -Wl,--version-script,$(MAPFILE) ++endif ++PROCESS_MAP_FILE = grep -v ';-' $(LIBRARY_NAME).def | \ ++ sed -e 's,;+,,' -e 's; DATA ;;' -e 's,;;,,' -e 's,;.*,;,' > $@ ++ +diff -up ./esc/coreconf/Linux3.4.mk.fix14 ./esc/coreconf/Linux3.4.mk +--- ./esc/coreconf/Linux3.4.mk.fix14 2012-05-10 15:09:37.298143842 -0700 ++++ ./esc/coreconf/Linux3.4.mk 2012-05-10 15:09:37.298143842 -0700 +@@ -0,0 +1,35 @@ ++# BEGIN COPYRIGHT BLOCK ++# This Program is free software; you can redistribute it and/or modify it under ++# the terms of the GNU General Public License as published by the Free Software ++# Foundation; version 2 of the License. ++# ++# This Program is distributed in the hope that it will be useful, but WITHOUT ++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS ++# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License along with ++# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple ++# Place, Suite 330, Boston, MA 02111-1307 USA. ++# ++# Copyright (C) 2005 Red Hat, Inc. ++# All rights reserved. ++# END COPYRIGHT BLOCK ++ ++# ++# Config stuff for Linux 3.4 (ELF) ++# ++ ++include $(CORE_DEPTH)/coreconf/Linux.mk ++ ++OS_REL_CFLAGS += -DLINUX2_1 ++MKSHLIB = $(CC) -shared -Wl,-soname -Wl,$(@:$(OBJDIR)/%.so=%.so) ++ifdef BUILD_OPT ++ OPTIMIZER = -O2 ++endif ++ ++ifdef MAPFILE ++ MKSHLIB += -Wl,--version-script,$(MAPFILE) ++endif ++PROCESS_MAP_FILE = grep -v ';-' $(LIBRARY_NAME).def | \ ++ sed -e 's,;+,,' -e 's; DATA ;;' -e 's,;;,,' -e 's,;.*,;,' > $@ ++ +diff -up ./esc/coreconf/Linux3.5.mk.fix14 ./esc/coreconf/Linux3.5.mk +--- ./esc/coreconf/Linux3.5.mk.fix14 2012-05-10 15:09:37.299143830 -0700 ++++ ./esc/coreconf/Linux3.5.mk 2012-05-10 15:09:37.298143842 -0700 +@@ -0,0 +1,35 @@ ++# BEGIN COPYRIGHT BLOCK ++# This Program is free software; you can redistribute it and/or modify it under ++# the terms of the GNU General Public License as published by the Free Software ++# Foundation; version 2 of the License. ++# ++# This Program is distributed in the hope that it will be useful, but WITHOUT ++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS ++# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License along with ++# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple ++# Place, Suite 330, Boston, MA 02111-1307 USA. ++# ++# Copyright (C) 2005 Red Hat, Inc. ++# All rights reserved. ++# END COPYRIGHT BLOCK ++ ++# ++# Config stuff for Linux 3.5 (ELF) ++# ++ ++include $(CORE_DEPTH)/coreconf/Linux.mk ++ ++OS_REL_CFLAGS += -DLINUX2_1 ++MKSHLIB = $(CC) -shared -Wl,-soname -Wl,$(@:$(OBJDIR)/%.so=%.so) ++ifdef BUILD_OPT ++ OPTIMIZER = -O2 ++endif ++ ++ifdef MAPFILE ++ MKSHLIB += -Wl,--version-script,$(MAPFILE) ++endif ++PROCESS_MAP_FILE = grep -v ';-' $(LIBRARY_NAME).def | \ ++ sed -e 's,;+,,' -e 's; DATA ;;' -e 's,;;,,' -e 's,;.*,;,' > $@ ++ +diff -up ./esc/src/app/xpcom/Makefile.sdk.fix14 ./esc/src/app/xpcom/Makefile.sdk +--- ./esc/src/app/xpcom/Makefile.sdk.fix14 2012-05-10 15:09:37.293143904 -0700 ++++ ./esc/src/app/xpcom/Makefile.sdk 2012-05-10 15:25:17.138394220 -0700 +@@ -106,15 +106,14 @@ endif + endif + + ifeq ($(OS_ARCH),Darwin) +-GECKO_LD_LIBS=-L$(GECKO_SDK_PATH)/lib -W1, $(GECKO_SDK_PATH)/lib/libxpcomglue.a -L$(XUL_FRAMEWORK_BIN_PATH) -lnss3 -lssl3 -lsoftokn3 -lplds4 -lplc4 -lnssutil3 ++GECKO_LD_LIBS=-L$(GECKO_SDK_PATH)/lib -W1, $(GECKO_SDK_PATH)/lib/libxpcomglue.a -L$(XUL_FRAMEWORK_BIN_PATH) -lnss3 -lssl3 -lsoftokn3 -lplds4 -lplc4 -lnssutil3 + endif + +- + ifeq ($(OS_ARCH),Linux) +-CPPFLAGS += -fno-rtti \ +- -fno-exceptions \ +- -fshort-wchar -fPIC -std=gnu++0x +-GECKO_LD_LIBS=-L$(GECKO_SDK_PATH)/lib $(GECKO_SDK_PATH)/lib/libxpcomglue.a -lnssutil3 -lnss3 -lcrmf -lssl3 -lsmime3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl ++CPPFLAGS += -g -fno-rtti \ ++ -DXPCOM_GLUE_USE_NSPR -fno-exceptions \ ++ -fshort-wchar -fPIC -std=gnu++0x ++GECKO_LD_LIBS=-L$(GECKO_SDK_PATH)/lib -lnssutil3 -lnss3 -lcrmf -lssl3 -lsmime3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl -L$(GECKO_SDK_PATH)/lib -lxpcomglue_s -lxpcom + endif + + ifeq ($(OS_ARCH),WINNT) +@@ -128,15 +127,15 @@ endif + # #include "mozilla-config.h" to each of your .cpp files. + #GECKO_CONFIG_INCLUDE = -include mozilla-config.h + +-GECKO_DEFINES = -DXPCOM_GLUE -DMOZILLA_CLIENT ++GECKO_DEFINES = -DXPCOM_GLUE -DMOZILLA_CLIENT + + ifdef ESC_VERSION + GECKO_DEFINES += -DESC_VERSION=$(ESC_VERSION) + endif + +-ifdef GECKO_BIN_PATH +-GECKO_DEFINES += -DGECKO_BIN_PATH=$(GECKO_BIN_PATH) +-endif ++#ifdef GECKO_BIN_PATH ++#GECKO_DEFINES += -DGECKO_BIN_PATH=$(GECKO_BIN_PATH) ++#endif + + NSS_INCLUDE = /usr/include/nss3 + NSPR_INCLUDE = /usr/include/nspr4 +@@ -162,7 +161,7 @@ COOL_LDFLAGS += -lsystemStubs -framewor + endif + + GECKO_LDFLAGS= -lnspr4 \ +- -lplds4 -lplc4 -ldl -lpthread -Wl -z \ ++ -lplds4 -lplc4 -ldl -lpthread -z \ + $(GECKO_LD_LIBS) + + ifeq ($(OS_ARCH),WINNT) +@@ -215,7 +214,7 @@ ifeq ($(OS_ARCH),Linux) + + $(CXX) $(CPPFLAGS) -shared -o $(TARGET) $(OBJECT) $(GECKO_DEFINES) $(GECKO_INCLUDES) $(GECKO_LDFLAGS) $(COOL_LDFLAGS) + chmod +x $(TARGET) +- strip $(TARGET) ++ #strip $(TARGET) + endif + + ifeq ($(OS_ARCH),WINNT) +diff -up ./esc/src/app/xpcom/rhCoolKey.cpp.fix14 ./esc/src/app/xpcom/rhCoolKey.cpp +--- ./esc/src/app/xpcom/rhCoolKey.cpp.fix14 2012-05-10 15:09:37.294143891 -0700 ++++ ./esc/src/app/xpcom/rhCoolKey.cpp 2012-05-10 15:09:37.300143818 -0700 +@@ -16,7 +16,6 @@ + * END COPYRIGHT BLOCK **/ + + #define FORCE_PR_LOG 1 +- + #include + #include "rhCoolKey.h" + #include "CoolKey.h" +@@ -34,7 +33,7 @@ + #include "nsIPrefBranch.h" + #include "nsIPrefService.h" + #include "nsCOMPtr.h" +-#include "nsIProxyObjectManager.h" ++#include "nsThreadUtils.h" + #include "nsIObserver.h" + #include "nsIObserverService.h" + #include "nsXPCOMGlue.h" +@@ -91,6 +90,7 @@ std::listrhCoolKey::gASCAv + std::list< nsCOMPtr > rhCoolKey::gNotifyListeners; + + PRLock* rhCoolKey::certCBLock=NULL; ++PRLock* rhCoolKey::eventLock= NULL; + + PRBool rhCoolKey::gAutoEnrollBlankTokens = PR_FALSE; + +@@ -162,6 +162,70 @@ ASCCalcBase64DecodedLength(const char *a + + return ((numValidChars / 4) * 3) - numEqualSigns; + } ++class CoolKeyResultTask : public nsRunnable ++{ ++public: ++ ~CoolKeyResultTask() { ++ ++ char tBuff[56]; ++ PR_LOG( coolKeyLog, PR_LOG_DEBUG, ("%s ~CoolKeyResultTask thread: %p \n",GetTStamp(tBuff,56),PR_GetCurrentThread())); ++ ++ if (mKeyID) { ++ free(mKeyID); ++ } ++ ++ if (mStrData) { ++ free(mStrData); ++ } ++ ++ } ++ ++ CoolKeyResultTask(unsigned long keyType, const char *keyID, unsigned long keyState, ++ unsigned long data, const char *strData, rhICoolKey *listener) ++ : mKeyType(keyType), mKeyState(keyState), ++ mData(data), mListener(listener) ++ { ++ ++ mStrData = NULL; ++ mKeyID = NULL; ++ ++ MOZ_ASSERT(!NS_IsMainThread()); ++ ++ if (keyID) { ++ mKeyID = strdup(keyID); ++ } ++ ++ if (strData) { ++ mStrData = strdup(strData); ++ } ++ ++ char tBuff[56]; ++ ++ PR_LOG( coolKeyLog, PR_LOG_DEBUG, ("%s CoolKeyResultTask::CoolKeyResultTask thread: %p keyID %s \n",GetTStamp(tBuff,56),PR_GetCurrentThread(),mKeyID)); ++ ++ } ++ ++ ++ NS_IMETHOD Run() { ++ MOZ_ASSERT(NS_IsMainThread()); ++ ++ char tBuff[56]; ++ PR_LOG( coolKeyLog, PR_LOG_DEBUG, ("%s CoolKeyResultTask::Run thread: %p \n",GetTStamp(tBuff,56),PR_GetCurrentThread())); ++ ++ if (mListener != NULL) { ++ mListener->RhNotifyKeyStateChange(mKeyType, mKeyID, mKeyState, ++ mData, mStrData); ++ } ++ } ++ ++private: ++ unsigned long mKeyType; ++ char *mKeyID; ++ unsigned long mKeyState; ++ unsigned long mData; ++ char *mStrData; ++ rhICoolKey *mListener; ++}; + + unsigned int + ASCCalcBase64EncodedLength(unsigned int aDataLength) +@@ -200,6 +264,14 @@ rhCoolKey::rhCoolKey() + exit(1); + } + ++ eventLock = PR_NewLock(); ++ ++ if(!eventLock) { ++ PR_LOG( coolKeyLog, PR_LOG_ERROR, ("%s Failed to create event lock exiting! \n", GetTStamp(tBuff,56))); ++ exit(1); ++ } ++ ++ + PRBool res = InitInstance(); + + if(res == PR_FALSE) +@@ -221,6 +293,10 @@ rhCoolKey::~rhCoolKey() + if(certCBLock) { + PR_DestroyLock(certCBLock); + } ++ ++ if(eventLock) { ++ PR_DestroyLock(eventLock); ++ } + } + + void rhCoolKey::ShutDownInstance() +@@ -255,8 +331,17 @@ HRESULT rhCoolKey::Dispatch( rhICoolKey + unsigned long keyType, const char *keyID, unsigned long keyState, + unsigned long data, const char *strData) + { +- return listener->RhNotifyKeyStateChange(keyType,keyID, keyState, +- data, strData); ++ ++ char tBuff[56]; ++ ++ PR_Lock(eventLock); ++ PR_LOG( coolKeyLog, PR_LOG_DEBUG, ("%s rhCoolKey::Dispatch: thead: %p \n",GetTStamp(tBuff,56),PR_GetCurrentThread())); ++ nsCOMPtr result = new CoolKeyResultTask(keyType, keyID,keyState, data, strData, listener); ++ ++ NS_DispatchToMainThread(result); ++ ++ PR_Unlock(eventLock); ++ return 1; + } + + HRESULT rhCoolKey::Reference( rhICoolKey *listener ) +@@ -536,34 +621,6 @@ PRBool rhCoolKey::InitInstance() + + PR_LOG( coolKeyLog, PR_LOG_DEBUG, ("%s rhCoolKey::InitInstance %p \n",GetTStamp(tBuff,56),this)); + +- char xpcom_path[4096]; +- xpcom_path[0] = 0; +-/* +- static const GREVersionRange greVersion = +- { +- "1.9", PR_TRUE, +- "9.9", PR_TRUE +- }; +- +- nsresult rv = GRE_GetGREPathWithProperties(&greVersion, 1, nsnull, 0, xpcom_path, 4096); +- if (NS_FAILED(rv)) { +- return PR_FALSE; +- } +- +-*/ +- +- char *grePath = (char *) GETSTRING(GECKO_BIN_PATH); +- +- +- snprintf(xpcom_path,4096,"%s%s",grePath,"libxpcom.so"); +- +- char *lib_name =(char *) XPCOM_LIB_NAME ; +- +- +- PR_LOG( coolKeyLog, PR_LOG_DEBUG, ("%s rhCoolKey::xpcom_path %s \n",GetTStamp(tBuff,56),xpcom_path)); +- +- XPCOMGlueStartup("/usr/lib/xulrunner-2/libxpcom.so"); +- + nssComponent + = do_GetService(PSM_COMPONENT_CONTRACTID); + +@@ -640,23 +697,8 @@ PRBool rhCoolKey::InitInstance() + + rhICoolKey* rhCoolKey::CreateProxyObject() + { +- char tBuff[56]; +- rhICoolKey *proxyObject = NULL; +- +- PR_LOG( coolKeyLog, PR_LOG_DEBUG, ("%s rhCoolKey::CreateProxyObject: \n",GetTStamp(tBuff,56))); +- +- nsCOMPtr manager = +- do_GetService(NS_XPCOMPROXY_CONTRACTID); +- +- PR_ASSERT(manager); +- +- +- manager->GetProxyForObject(NULL, NS_GET_IID(rhICoolKey), this, NS_PROXY_SYNC | NS_PROXY_ALWAYS, (void**)&proxyObject); +- +- PR_LOG( coolKeyLog, PR_LOG_DEBUG, ("%s rhCoolKey::CreateProxyObject: original: %p proxy %p \n",GetTStamp(tBuff,56),this,proxyObject)); +- +- return proxyObject; +- ++ // Now we are using nsRunnable, no more proxy object manager. ++ return this; + } + + CoolKeyNode* rhCoolKey::GetCoolKeyInfo(unsigned long aKeyType, const char * aKeyID) +diff -up ./esc/src/app/xpcom/rhCoolKey.h.fix14 ./esc/src/app/xpcom/rhCoolKey.h +--- ./esc/src/app/xpcom/rhCoolKey.h.fix14 2012-05-10 15:09:37.274144142 -0700 ++++ ./esc/src/app/xpcom/rhCoolKey.h 2012-05-10 15:09:37.300143818 -0700 +@@ -120,6 +120,7 @@ protected: + static std::list< nsCOMPtr > gNotifyListeners; + + static PRLock* certCBLock; ++ static PRLock* eventLock; + + rhICoolKey* mProxy; + +diff -up ./esc/src/app/xul/esc/application.ini.fix14 ./esc/src/app/xul/esc/application.ini +--- ./esc/src/app/xul/esc/application.ini.fix14 2012-05-10 15:09:37.295143878 -0700 ++++ ./esc/src/app/xul/esc/application.ini 2012-05-10 15:09:37.300143818 -0700 +@@ -25,11 +25,11 @@ Vendor=RedHat + Name=ESC + ; + ; This field specifies your application's version. This field is optional. +-Version=1.1.0-15 ++Version=1.1.0-16 + ; + ; This field specifies your application's build ID (timestamp). This field is + ; required. +-BuildID=0000001016 ++BuildID=0000001017 + ; + ; This ID is just an example. Every XUL app ought to have it's own unique ID. + ; You can use the microsoft "guidgen" or "uuidgen" tools, or go on +diff -up ./esc/src/app/xul/esc/chrome/content/esc/password.xul.fix14 ./esc/src/app/xul/esc/chrome/content/esc/password.xul +--- ./esc/src/app/xul/esc/chrome/content/esc/password.xul.fix14 2012-05-10 15:09:37.251144429 -0700 ++++ ./esc/src/app/xul/esc/chrome/content/esc/password.xul 2012-05-10 15:09:37.301143805 -0700 +@@ -27,7 +27,6 @@ + + +