[esc/f18] Pick up latest changes.
Jack Magne
jmagne at fedoraproject.org
Thu Nov 22 00:35:45 UTC 2012
commit 377f8786277d8ae45e0a656cbcc1fe7013a8341d
Author: jack magne <jmagne at unused-32-158.sjc.redhat.com>
Date: Wed Nov 21 16:35:01 2012 -0800
Pick up latest changes.
esc-1.1.0-fix15.patch | 687 +++++++++++++++++++++++++++++++++++++++++++++++++
esc.spec | 34 ++-
2 files changed, 711 insertions(+), 10 deletions(-)
---
diff --git a/esc-1.1.0-fix15.patch b/esc-1.1.0-fix15.patch
new file mode 100755
index 0000000..7136809
--- /dev/null
+++ b/esc-1.1.0-fix15.patch
@@ -0,0 +1,687 @@
+diff -up ./esc/src/app/xpcom/tray/Makefile.sdk.fix15 ./esc/src/app/xpcom/tray/Makefile.sdk
+--- ./esc/src/app/xpcom/tray/Makefile.sdk.fix15 2012-11-21 11:55:24.396959829 -0800
++++ ./esc/src/app/xpcom/tray/Makefile.sdk 2012-11-21 11:55:35.227171392 -0800
+@@ -248,7 +248,7 @@ ifeq ($(OS_ARCH),Linux)
+
+ $(CXX) $(CPPFLAGS) -shared -o $(TARGET) $(OBJECT) $(GECKO_DEFINES) $(GECKO_INCLUDES) $(GECKO_LDFLAGS) $(COOLKEY_LIBS)
+ chmod +x $(TARGET)
+- strip $(TARGET)
++ #strip $(TARGET)
+ endif
+
+ ifeq ($(OS_ARCH),WINNT)
+diff -up ./esc/src/app/xpcom/tray/rhLinuxTray.cpp.fix15 ./esc/src/app/xpcom/tray/rhLinuxTray.cpp
+--- ./esc/src/app/xpcom/tray/rhLinuxTray.cpp.fix15 2012-11-21 11:56:16.677981170 -0800
++++ ./esc/src/app/xpcom/tray/rhLinuxTray.cpp 2012-11-21 11:56:45.736548897 -0800
+@@ -290,7 +290,7 @@ HRESULT rhTray::Initialize()
+
+ PR_LOG( trayLog, PR_LOG_DEBUG, ("%s rhTray::Initialize \n",GetTStamp(tBuff,56)));
+ g_set_print_handler(rhTray::TrayPrintHandler);
+- notify_icon_create_with_image_file(COOLKEY_ICON);
++ notify_icon_create_with_image_file((char *)COOLKEY_ICON);
+
+ HRESULT res = notify_icon_created_ok();
+
+diff -up ./esc/src/app/xpcom/tray/rhTray.h.fix15 ./esc/src/app/xpcom/tray/rhTray.h
+--- ./esc/src/app/xpcom/tray/rhTray.h.fix15 2012-11-21 11:57:47.827762126 -0800
++++ ./esc/src/app/xpcom/tray/rhTray.h 2012-11-21 11:57:58.304966858 -0800
+@@ -37,7 +37,7 @@ extern "C" {
+ int maxSize = 55;
+ if(aSize < maxSize)
+ return NULL;
+- char *tFormat = "[%c]";
++ char *tFormat = (char *) "[%c]";
+ time_t tm = time(NULL);
+ struct tm *ptr = localtime(&tm);
+ strftime(aTime ,maxSize ,tFormat,ptr);
+diff -up ./esc/src/app/xul/esc/chrome/content/esc/advancedinfo.xul.fix15 ./esc/src/app/xul/esc/chrome/content/esc/advancedinfo.xul
+--- ./esc/src/app/xul/esc/chrome/content/esc/advancedinfo.xul.fix15 2012-11-21 14:23:47.146114600 -0800
++++ ./esc/src/app/xul/esc/chrome/content/esc/advancedinfo.xul 2012-11-21 14:24:57.057408644 -0800
+@@ -22,6 +22,9 @@
+ <window
+ class="escwindow"
+ id="esc-window"
++ height="500"
++ width="600"
++ persist="width height"
+ onload="ShowAdvancedInfo();"
+ onunload="cleanup();"
+ title="&escTitle;"
+diff -up ./esc/src/app/xul/esc/chrome/content/esc/config.xul.fix15 ./esc/src/app/xul/esc/chrome/content/esc/config.xul
+--- ./esc/src/app/xul/esc/chrome/content/esc/config.xul.fix15 2012-11-21 14:25:17.956795502 -0800
++++ ./esc/src/app/xul/esc/chrome/content/esc/config.xul 2012-11-21 14:25:53.737457832 -0800
+@@ -26,6 +26,7 @@
+ onload="InitializePhoneHomeConfigUI();"
+ width ="650"
+ height= "400"
++ persist="width height"
+ onunload="cleanup();"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+ <stringbundle id="esc_strings" src="chrome://esc/locale/esc.properties"/>
+diff -up ./esc/src/app/xul/esc/chrome/content/esc/esc.css.fix15 ./esc/src/app/xul/esc/chrome/content/esc/esc.css
+--- ./esc/src/app/xul/esc/chrome/content/esc/esc.css.fix15 2012-11-21 14:26:08.849737580 -0800
++++ ./esc/src/app/xul/esc/chrome/content/esc/esc.css 2012-11-21 14:27:06.947813071 -0800
+@@ -334,6 +334,10 @@ tr [COOLKeyPresent="yes"]{
+ border: black solid 4px;
+ }
+
++.BorderedBrowser {
++ border: black solid 4px;
++}
++
+ .SelectedRow {
+
+ color: white;
+diff -up ./esc/src/app/xul/esc/chrome/content/esc/ESC.js.fix15 ./esc/src/app/xul/esc/chrome/content/esc/ESC.js
+--- ./esc/src/app/xul/esc/chrome/content/esc/ESC.js.fix15 2012-11-20 16:10:36.281805678 -0800
++++ ./esc/src/app/xul/esc/chrome/content/esc/ESC.js 2012-11-21 14:55:47.392037184 -0800
+@@ -29,6 +29,7 @@ var gAdminPage = 0;
+ var gFactoryMode = 0;
+ var gHiddenPage = 0;
+ var gExternalUI = 0;
++var gErrorAlready = 0;
+
+ loadStringBundle();
+
+@@ -116,9 +117,10 @@ jsNotify.prototype = {
+ {
+ // alert("iid: " + iid);
+ if(!iid.equals(Components.interfaces.rhIKeyNotify) &&
+- !iid.equals(Components.interfaces.nsISupports))
++ !iid.equals(Components.interfaces.nsISupports) &&
++ !iid.equals(Components.interfaces.nsIClassInfo))
+ {
+- //MyAlert(getBundleString("errorJsNotifyInterface"));
++ MyAlert(getBundleString("errorJsNotifyInterface"));
+ throw Components.results.NS_ERROR_NO_INTERFACE;
+ }
+ return this;
+@@ -885,7 +887,7 @@ function DoShowAdvancedInfo()
+ textDump += getBundleString("noLogFileOrData");
+ }
+
+- var wnd = window.openDialog("chrome://esc/content/advancedinfo.xul","Info","chrome,centerscreen,width=600,height=500,modal=yes",textDump);
++ var wnd = window.openDialog("chrome://esc/content/advancedinfo.xul","Info","chrome,centerscreen,modal=yes",textDump);
+
+ }
+
+@@ -1279,7 +1281,8 @@ function DoShowFullEnrollmentUI()
+ }
+ else
+ {
+- UpdateEnrollmentArea(keyType,keyID,keyInserted,showFullUI);
++ MyAlert(getBundleString("errorPhoneHomeInfo"));
++ window.close();
+ }
+ }
+
+@@ -1424,7 +1427,7 @@ function UpdateEnrollmentArea(keyType,ke
+ HideItem(yes_key_area);
+ HideItem(enroll_key_message);
+ HideItem(enrollBtn);
+- UpdateESCSize(ESC_ENROLL_WIDTH,ESC_ENROLL_HEIGHT);
++ UpdateESCSize();
+ }
+ }
+ else
+@@ -1453,7 +1456,7 @@ function UpdateEnrollmentArea(keyType,ke
+
+ if(!alreadyEnrolled && inserted && showExternalUI)
+ {
+- UpdateESCSize(ESC_ENROLL_WIDTH,ESC_ENROLL_HEIGHT);
++ UpdateESCSize();
+ return;
+ }
+
+@@ -1792,9 +1795,73 @@ function InitializeEnrollment()
+ UpdateCoolKeyAvailabilityForEnrollment();
+ }
+
++function AdminKeyPressHandler(evt)
++{
++ var newitem = null;
++ var olditem = null;
++ var offset = 0;
++ var selectedIndex = 0;
++
++ var list = document.getElementById("AdminBindingList");
++ if(!list)
++ return;
++
++ var numRows = list.getRowCount();
++ if(numRows == 0)
++ {
++ return;
++ }
++ list.selectItem(gCurrentSelectedRow);
++ selectedIndex = list.selectedIndex;
++
++ if(selectedIndex == -1)
++ {
++ olditem = list.getItemAtIndex(0);
++ if(olditem) {
++ list.selectItem(olditem);
++ olditem.click();
++ }
++ }
++ selectedIndex = list.selectedIndex;
++ olditem = list.getItemAtIndex(selectedIndex);
++
++ if(evt.keyCode == KeyEvent.DOM_VK_UP) {
++ offset = -1;
++ }
++ if(evt.keyCode == KeyEvent.DOM_VK_DOWN) {
++ offset = 1;
++ }
++
++ if(offset == 0)
++ return;
++
++ if(olditem) {
++ list.moveByOffset( offset , 1, 0);
++ newitem = list.getItemAtIndex(list.selectedIndex);
++ olditem.blur();
++ if(newitem)
++ newitem.click();
++ }
++
++ var item = null;
++ for( i = 0; i < list.getRowCount(); i ++) {
++ item = list.getItemAtIndex(i);
++
++ if(item && item != gCurrentSelectedRow) {
++ item.setAttribute("class","UnSelectedRow");
++ }
++ }
++}
++
+ function InitializeAdminBindingList()
+ {
+
++ var list = document.getElementById("AdminBindingList");
++
++ if(list) {
++ list.addEventListener("keypress", AdminKeyPressHandler, false);
++ }
++
+ gAdminPage = 1;
+
+ UpdateAdminBindingListAvailability();
+@@ -1802,8 +1869,7 @@ function InitializeAdminBindingList()
+ DoSetEnrolledBrowserLaunchState();
+ DoHandleEnrolledBrowserLaunch();
+
+- window.setTimeout('ShowWindow()',250);
+-
++ list.focus();
+ }
+
+ //Window related functions
+@@ -1974,12 +2040,18 @@ function SelectESCPage(keyType,keyID,pho
+ var enrollWnd = IsPageWindowPresent(ENROLL_WINDOW);
+ var adminWnd = IsPageWindowPresent(ADMIN_WINDOW);
+
+- if(keyUninitialized == UNINITIALIZED && !phoneHomeFailed ) //formatted uninitialized card
++ var arr = GetAvailableCoolKeys();
++ var no_launch_external_ui = 0;
++
++ if (arr && arr.length > 1)
++ no_launch_external_ui = 1;
++
++
++ if(keyUninitialized == UNINITIALIZED && !phoneHomeFailed && !no_launch_external_ui ) //formatted uninitialized card
+ {
+ if(enrollWnd) //Enrollment window is already up
+ {
+ enrollWnd.focus();
+- enrollWnd.ShowWindow();
+ }
+ else
+ {
+@@ -2332,12 +2404,14 @@ function UpdateAdminKeyDetailsArea(keyTy
+ }
+ else
+ {
++ DisableItem(enrollbtn);
+ DisableItem(resetpinbtn);
+ DisableItem(formatbtn);
+ if(adminkeymenu)
+ {
+ DisableItem(menu_format);
+ DisableItem(menu_resetpassword);
++ DisableItem(menu_enroll);
+ }
+ }
+
+@@ -2762,6 +2836,7 @@ function DoEnrollCoolKey()
+ var tokencode = null;
+
+ var failed = 0;
++ gErrorAlready = 0;
+
+ if (type == "userKey")
+ {
+@@ -2792,12 +2867,13 @@ function DoEnrollCoolKey()
+ {
+ UpdateAdminListRow(keyType,keyID);
+ UpdateAdminKeyDetailsArea(keyType,keyID);
+- if(!failed)
++ if(!failed && !gErrorAlready)
+ {
+ AdminToggleStatusProgress(1,keyType,keyID);
+ UpdateAdminKeyAreaDetailsLabel(getBundleString("enrollingToken"));
+ }
+ }
++ gErrorAlready = 0;
+ }
+
+ function DoCollectPassword(operation)
+@@ -2822,6 +2898,7 @@ function DoResetSelectedCoolKeyPIN()
+ var screennamepwd = null;
+
+ var failed = 0;
++ gErrorAlready = 0;
+
+ if (GetCoolKeyIsEnrolled(keyType, keyID))
+ {
+@@ -2843,12 +2920,13 @@ function DoResetSelectedCoolKeyPIN()
+ UpdateAdminListRow(keyType,keyID);
+ UpdateAdminKeyDetailsArea(keyType,keyID);
+
+- if(!failed)
++ if(!failed && !gErrorAlready)
+ {
+ AdminToggleStatusProgress(1,keyType,keyID);
+ UpdateAdminKeyAreaDetailsLabel(getBundleString("resettingTokenPIN"));
+ }
+ }
++ gErrorAlready = 0;
+ }
+
+ function DoFormatCoolKey(type)
+@@ -2865,6 +2943,7 @@ function DoFormatCoolKey(type)
+ var failed = 0;
+ var globalType = GetCachedTokenType(keyID);
+
++ gErrorAlready = 0;
+ if(!type)
+ lType = gKeyEnrollmentType;
+ else
+@@ -2890,12 +2969,13 @@ function DoFormatCoolKey(type)
+ {
+ UpdateAdminListRow(keyType,keyID);
+ UpdateAdminKeyDetailsArea(keyType,keyID);
+- if(!failed)
++ if(!failed && !gErrorAlready)
+ {
+ AdminToggleStatusProgress(1,keyType,keyID);
+ UpdateAdminKeyAreaDetailsLabel(getBundleString("formatingToken"));
+ }
+ }
++ gErrorAlready = 0;
+ }
+ function DoCancelOperation()
+ {
+@@ -3156,6 +3236,7 @@ function OnCoolKeyStateError(keyType, ke
+ AdminToggleStatusProgress(0,keyType,keyID);
+ }
+
++ gErrorAlready = 1;
+ if(!CheckForSecurityMode())
+ MyAlert(typeStr);
+ ClearProgressBar(KeyToProgressBarID(keyType, keyID));
+@@ -3261,9 +3342,73 @@ function refresh()
+ window.resizeBy(0,-1);
+ }
+
++//nsIWebProgressListener to oversee the loading of the external UI
++var uiListener = null;
++var esc_enroll_uri = null;
++
++const STATE_START = Components.interfaces.nsIWebProgressListener.STATE_START;
++const STATE_STOP = Components.interfaces.nsIWebProgressListener.STATE_STOP;
++const STATE_IS_DOCUMENT = Components.interfaces.nsIWebProgressListener.STATE_IS_DOCUMENT;
++uiListener =
++{
++ QueryInterface: function(aIID)
++ {
++ if (aIID.equals(Components.interfaces.nsIWebProgressListener) ||
++ aIID.equals(Components.interfaces.nsISupportsWeakReference) ||
++ aIID.equals(Components.interfaces.nsISupports))
++ return this;
++ throw Components.results.NS_NOINTERFACE;
++ },
++
++ onStateChange: function(aWebProgress, aRequest, aFlag, aStatus)
++ {
++ if(aFlag & STATE_START && aFlag & STATE_IS_DOCUMENT)
++ {
++ }
++ if(aFlag & STATE_STOP && aFlag & STATE_IS_DOCUMENT)
++ {
++
++ var url = aWebProgress.DOMWindow.document.URL;
++
++ if(url != esc_enroll_uri)
++ {
++ MyAlert(getBundleString("errorEnrollmentUI"));
++
++ if(uiListener)
++ aWebProgress.removeProgressListener(uiListener);
++
++ var enrollWnd = IsPageWindowPresent(ENROLL_WINDOW);
++
++ if(enrollWnd)
++ {
++ enrollWnd.close();
++ }
++ }
++ else
++ {
++ if(uiListener)
++ aWebProgress.removeProgressListener(uiListener);
++ }
++ }
++ },
++
++ onLocationChange: function(aProgress, aRequest, aURI)
++ {
++ },
++ onProgressChange: function(aWebProgress, aRequest, curSelf, maxSelf, curTot, maxTot)
++ {
++ },
++ onStatusChange: function(aWebProgress, aRequest, aStatus, aMessage)
++ {
++ },
++ onSecurityChange: function(aWebProgress, aRequest, aState)
++ {
++ }
++}
++
+ function loadExternalESCUI()
+ {
+- var esc_enroll_uri = null;
++ esc_enroll_uri = null;
+
+ var keyType= null;
+ var keyID = null;
+@@ -3324,6 +3469,7 @@ function loadExternalESCUI()
+ if(ui_id)
+ {
+ ui_id.setAttribute("src",esc_enroll_uri);
++ ///ui_id.addProgressListener(uiListener,Components.interfaces.nsIWebProgress.NOTIFY_STATE_DOCUMENT);
+ UpdateEnrollmentArea(keyType,keyID,inserted,showFullUI,showExternalUI)
+ }
+
+diff -up ./esc/src/app/xul/esc/chrome/content/esc/esc.xul.fix15 ./esc/src/app/xul/esc/chrome/content/esc/esc.xul
+--- ./esc/src/app/xul/esc/chrome/content/esc/esc.xul.fix15 2012-11-21 11:14:42.545118881 -0800
++++ ./esc/src/app/xul/esc/chrome/content/esc/esc.xul 2012-11-21 11:16:21.542042804 -0800
+@@ -147,7 +147,8 @@
+ </hbox>
+ </vbox>
+
+- <iframe id="esc-ui" flex="1" class="BorderedIFrame" hidden="true"/>
++ <browser id="esc-ui" class="BorderedBrowser" height="725" flex="1" hidden="true" src="" />
++
+ </groupbox>
+ <hbox id = "enrollment_button_box">
+ <spacer flex = "4"/>
+diff -up ./esc/src/app/xul/esc/chrome/content/esc/password.js.fix15 ./esc/src/app/xul/esc/chrome/content/esc/password.js
+--- ./esc/src/app/xul/esc/chrome/content/esc/password.js.fix15 2012-11-21 11:16:28.740186184 -0800
++++ ./esc/src/app/xul/esc/chrome/content/esc/password.js 2012-11-21 11:18:32.722686536 -0800
+@@ -42,6 +42,21 @@ function doOperation()
+ window.close();
+ }
+
++//
++// unregister out notify event
++//
++function cleanup()
++{
++ TrayRemoveWindow(null);
++ try {
++ netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
++ netkey.rhCoolKeyUnSetNotifyCallback(gNotify);
++ } catch(e) {
++ MyAlert(getBundleString("errorUniversalXPConnect") + e);
++ }
++
++}
++
+
+ function GetLocalPINValue()
+ {
+diff -up ./esc/src/app/xul/esc/chrome/content/esc/password.xul.fix15 ./esc/src/app/xul/esc/chrome/content/esc/password.xul
+diff -up ./esc/src/app/xul/esc/chrome/content/esc/security.xul.fix15 ./esc/src/app/xul/esc/chrome/content/esc/security.xul
+--- ./esc/src/app/xul/esc/chrome/content/esc/security.xul.fix15 2012-11-21 14:52:14.192045524 -0800
++++ ./esc/src/app/xul/esc/chrome/content/esc/security.xul 2012-11-21 14:52:57.839863826 -0800
+@@ -26,6 +26,7 @@
+ onload="InitializeSecurityEnrollment()"
+ width ="600"
+ height= "575"
++ persist="width height"
+ onunload="cleanup();OnSecurityPageHidden();"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+diff -up ./esc/src/app/xul/esc/chrome/content/esc/settings.xul.fix15 ./esc/src/app/xul/esc/chrome/content/esc/settings.xul
+--- ./esc/src/app/xul/esc/chrome/content/esc/settings.xul.fix15 2012-11-21 14:53:16.829219643 -0800
++++ ./esc/src/app/xul/esc/chrome/content/esc/settings.xul 2012-11-21 14:53:42.456699662 -0800
+@@ -28,6 +28,7 @@
+ width ="720"
+ height= "415"
+ name="admin"
++ persist="width height"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+ <stringbundle id="esc_strings" src="chrome://esc/locale/esc.properties"/>
+diff -up ./esc/src/app/xul/esc/chrome/content/esc/TRAY.js.fix15 ./esc/src/app/xul/esc/chrome/content/esc/TRAY.js
+--- ./esc/src/app/xul/esc/chrome/content/esc/TRAY.js.fix15 2012-11-21 14:54:00.574038897 -0800
++++ ./esc/src/app/xul/esc/chrome/content/esc/TRAY.js 2012-11-21 14:58:29.722107000 -0800
+@@ -47,9 +47,10 @@ jsWindNotify.prototype = {
+ {
+ //alert("iid: " + iid);
+ if(!iid.equals(Components.interfaces.rhITrayWindNotify) &&
+- !iid.equals(Components.interfaces.nsISupports))
++ !iid.equals(Components.interfaces.nsISupports) &&
++ !iid.equals(Components.interfaces.nsIClassInfo)
+ {
+- //MyAlert(getBundleString("errorJsNotifyInterface"));
++ MyAlert(getBundleString("errorJsNotifyInterface"));
+ throw Components.results.NS_ERROR_NO_INTERFACE;
+ }
+ return this;
+@@ -423,6 +424,13 @@ alert("exception " + e);
+ }
+ }
+
++//Cleanup this window if ESC.js doesn't do it
++function traycleanup()
++{
++ TrayRemoveWindow(null);
++}
++
++
+ //String bundling related functions
+
+ function loadStringBundle()
+diff -up ./esc/src/app/xul/esc/chrome/locale/en-US/esc.properties.fix15 ./esc/src/app/xul/esc/chrome/locale/en-US/esc.properties
+--- ./esc/src/app/xul/esc/chrome/locale/en-US/esc.properties.fix15 2012-11-21 11:21:31.426280759 -0800
++++ ./esc/src/app/xul/esc/chrome/locale/en-US/esc.properties 2012-11-21 11:22:33.427512763 -0800
+@@ -176,6 +176,8 @@ errorSelectKey=Please select a smart car
+ errorEnrolledFirst=Smart card must be enrolled first! Enroll card and try again.
+ enrollmentFor=Enrollment of your
+ errorNeedKeyForSecMode=Please insert enrolled smart card before attempting secure mode.
++errorEnrollmentUI=Problem loading Enrollment UI, check your network connection, re-insert the card, and try again!
++errorPhoneHomeInfo=Problem loading Phone Home Information, check your network connection, re-insert the card, and try again!
+ wasSuccessful=was successful.
+ pinResetSuccessful=Password Reset was successfull!
+ formatOf=Format of
+diff -up ./esc/src/lib/coolkey/CoolKey.cpp.fix15 ./esc/src/lib/coolkey/CoolKey.cpp
+--- ./esc/src/lib/coolkey/CoolKey.cpp.fix15 2012-11-21 14:58:53.164558727 -0800
++++ ./esc/src/lib/coolkey/CoolKey.cpp 2012-11-21 15:02:47.425039628 -0800
+@@ -1412,7 +1412,7 @@ char *GetTStamp(char *aTime,int aSize)
+ if(aSize < maxSize)
+ return NULL;
+
+- char *tFormat = "[%c]";
++ char *tFormat = (char *) "[%c]";
+ time_t tm = time(NULL);
+ struct tm *ptr = localtime(&tm);
+ strftime(aTime ,maxSize ,tFormat,ptr);
+diff -up ./esc/src/lib/coolkey/CoolKeyHandler.cpp.fix15 ./esc/src/lib/coolkey/CoolKeyHandler.cpp
+--- ./esc/src/lib/coolkey/CoolKeyHandler.cpp.fix15 2012-11-21 15:03:00.069280046 -0800
++++ ./esc/src/lib/coolkey/CoolKeyHandler.cpp 2012-11-21 15:04:00.118420187 -0800
+@@ -1096,7 +1096,7 @@ HRESULT CoolKeyHandler::HttpBeginOpReque
+
+ char ascii_port[50];
+ char host_port[200];
+- char *method = "POST";
++ char *method = (char *) "POST";
+
+ if(mCharScreenName && mCharScreenNamePwd)
+ {
+@@ -1131,7 +1131,7 @@ HRESULT CoolKeyHandler::HttpBeginOpReque
+
+ string ext_buffer = "";
+
+- char *clientVer = "ESC 1.0.1";
++ char *clientVer = (char *) "ESC 1.0.1";
+ sprintf(buffer,"clientVersion=%s",clientVer);
+
+ ext_buffer = buffer;
+diff -up ./esc/src/lib/coolkey/CoolKey_Message.cpp.fix15 ./esc/src/lib/coolkey/CoolKey_Message.cpp
+--- ./esc/src/lib/coolkey/CoolKey_Message.cpp.fix15 2012-11-21 11:25:37.996165274 -0800
++++ ./esc/src/lib/coolkey/CoolKey_Message.cpp 2012-11-21 11:27:42.797605767 -0800
+@@ -560,7 +560,12 @@ void eCKMessage_LOGIN_RESPONSE::encode(s
+
+ string lPassword = getStringValue(pKey);
+
+- aOutputVal += sKey + delim1 + lScreenName + delim + pKey + delim1 + lPassword;
++ string ScreenName_encoded, Password_encoded;
++
++ URLEncode_str(lScreenName, ScreenName_encoded);
++ URLEncode_str(lPassword, Password_encoded);
++
++ aOutputVal += sKey + delim1 + ScreenName_encoded + delim + pKey + delim1 + Password_encoded;
+
+ eCKMessage::encode(aOutputVal);
+ }
+diff -up ./esc/src/lib/coolkey/NSSManager.cpp.fix15 ./esc/src/lib/coolkey/NSSManager.cpp
+--- ./esc/src/lib/coolkey/NSSManager.cpp.fix15 2012-11-21 15:04:06.329537968 -0800
++++ ./esc/src/lib/coolkey/NSSManager.cpp 2012-11-21 15:04:53.612433763 -0800
+@@ -96,7 +96,7 @@ HRESULT NSSManager::InitNSS(const char *
+ }
+ }
+
+- char *libName = COOLKEY_PKCS11_LIBRARY ;
++ char *libName = (char *) COOLKEY_PKCS11_LIBRARY ;
+
+ PR_LOG( coolKeyLogNSS, PR_LOG_DEBUG, ("%s InitNSS: About to try SECMOD_AddNewModule :%s \n",GetTStamp(tBuff,56),libName));
+
+@@ -330,8 +330,8 @@ NSSManager::GetKeyCertNicknames( const C
+
+ CERTCertNicknames *nicknames =
+ CERT_NicknameStringsFromCertList(certs,
+- NICKNAME_EXPIRED_STRING,
+- NICKNAME_NOT_YET_VALID_STRING);
++ (char *) NICKNAME_EXPIRED_STRING,
++ (char *) NICKNAME_NOT_YET_VALID_STRING);
+
+ char *curName = NULL;
+
+diff -up ./esc/src/lib/coolkey/SmartCardMonitoringThread.cpp.fix15 ./esc/src/lib/coolkey/SmartCardMonitoringThread.cpp
+--- ./esc/src/lib/coolkey/SmartCardMonitoringThread.cpp.fix15 2012-11-21 15:05:09.934742670 -0800
++++ ./esc/src/lib/coolkey/SmartCardMonitoringThread.cpp 2012-11-21 15:40:49.570037221 -0800
+@@ -35,8 +35,10 @@
+
+ static PRLogModuleInfo *coolKeyLogSC = PR_NewLogModule("coolKeySmart");
+
++static const PRUint32 COOLKEY_SHUTDOWN_WAIT_INTERVAL = 3;
++
+ SmartCardMonitoringThread::SmartCardMonitoringThread(SECMODModule *aModule)
+- : mModule(aModule), mThread(NULL)
++ : mModule(aModule), mThread(NULL), mExitThread(NULL)
+ {
+ char tBuff[56];
+ PR_LOG( coolKeyLogSC, PR_LOG_DEBUG,
+@@ -184,6 +186,9 @@ void SmartCardMonitoringThread::Execute(
+
+ } while (1);
+
++ PR_LOG( coolKeyLogSC, PR_LOG_DEBUG,
++ ("%s SmartCardMonitoringThread::Execute Leaving thread : \n",GetTStamp(tBuff,56)));
++
+ }
+
+ void SmartCardMonitoringThread::Interrupt()
+@@ -195,6 +200,14 @@ void SmartCardMonitoringThread::Interrup
+ if(mThread)
+ {
+ SECStatus rv;
++
++ if (!mExitThread) {
++ mExitThread = PR_CreateThread(PR_SYSTEM_THREAD, ExitTimeout, this,
++ PR_PRIORITY_NORMAL, PR_GLOBAL_THREAD,
++ PR_JOINABLE_THREAD, 0);
++ }
++
++
+ rv = SECMOD_CancelWait(mModule);
+ if (rv !=SECSuccess) {
+ PR_LOG( coolKeyLogSC, PR_LOG_DEBUG,
+@@ -255,3 +268,28 @@ void SmartCardMonitoringThread::LaunchEx
+ {
+ ((SmartCardMonitoringThread*)arg)->Execute();
+ }
++
++void SmartCardMonitoringThread::ExitTimeout(void *arg)
++{
++ char tBuff[56];
++ PR_LOG( coolKeyLogSC, PR_LOG_DEBUG,
++ ("%s SmartCardMonitoringThread::ExitTimeout : \n",GetTStamp(tBuff,56)));
++
++
++ if (arg == NULL) {
++ return;
++ }
++
++ PR_Sleep(PR_SecondsToInterval(COOLKEY_SHUTDOWN_WAIT_INTERVAL));
++
++ PR_LOG( coolKeyLogSC, PR_LOG_DEBUG,
++ ("%s SmartCardMonitoringThread::ExitTimeout : wait is done. \n",GetTStamp(tBuff,56)));
++
++ if(((SmartCardMonitoringThread*)arg)->mThread != NULL) {
++
++ PR_LOG( coolKeyLogSC, PR_LOG_DEBUG,
++ ("%s SmartCardMonitoringThread::ExitTimeout : Timeout expired while SECMOD_Cancel is hanging, good-bye..! \n",GetTStamp(tBuff,56)));
++
++ _exit(0);
++ }
++}
+diff -up ./esc/src/lib/coolkey/SmartCardMonitoringThread.h.fix15 ./esc/src/lib/coolkey/SmartCardMonitoringThread.h
+--- ./esc/src/lib/coolkey/SmartCardMonitoringThread.h.fix15 2012-11-21 15:14:55.270744772 -0800
++++ ./esc/src/lib/coolkey/SmartCardMonitoringThread.h 2012-11-21 15:16:42.068742060 -0800
+@@ -45,9 +45,11 @@ class SmartCardMonitoringThread
+ void Remove(CoolKeyInfo *info);
+
+ static void LaunchExecute(void *arg);
++ static void ExitTimeout(void *arg);
+
+ SECMODModule *mModule;
+ PRThread* mThread;
++ PRThread* mExitThread;
+ char* mCurrentActivation;
+ };
+
+diff -up ./esc/src/lib/notifytray/notifytray.c.fix15 ./esc/src/lib/notifytray/notifytray.c
+--- ./esc/src/lib/notifytray/notifytray.c.fix15 2012-11-21 15:35:54.119380073 -0800
++++ ./esc/src/lib/notifytray/notifytray.c 2012-11-21 15:36:57.948605760 -0800
+@@ -218,7 +218,7 @@ void notify_icon_send_tooltip_msg(const
+ if(!message || !notify)
+ return;
+
+- gchar *msg_title = NULL;
++ const gchar *msg_title = NULL;
+
+
+ if(!title)
diff --git a/esc.spec b/esc.spec
index 1bd931d..31a3796 100644
--- a/esc.spec
+++ b/esc.spec
@@ -1,20 +1,28 @@
Name: esc
Version: 1.1.0
-Release: 18%{?dist}
+Release: 19%{?dist}
Summary: Enterprise Security Client Smart Card Client
-License: GPL
+License: GPL+
URL: http://directory.fedora.redhat.com/wiki/CoolKey
Group: Applications/Internet
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+#Fix to build against XUlrunner SDK.
Patch1: esc-1.1.0-fix1.patch
+#Fix to the smart card handling thread
Patch2: esc-1.1.0-fix2.patch
+#Simple fix to some smart card error messages.
Patch3: esc-1.1.0-fix3.patch
+#Add -fno-strict-aliasing compile flag.
Patch4: esc-1.1.0-fix4.patch
+#Fix error with reporting a certain smart card error message.
Patch5: esc-1.1.0-fix5.patch
+#Allow the http library the ability to observe security exceptions for incoming server certs.
Patch6: esc-1.1.0-fix6.patch
+#Ipv6 support for the http library.
Patch7: esc-1.1.0-fix7.patch
+
Patch8: esc-1.1.0-fix8.patch
Patch9: esc-1.1.0-fix9.patch
Patch10: esc-1.1.0-fix10.patch
@@ -22,6 +30,7 @@ Patch11: esc-1.1.0-fix11.patch
Patch12: esc-1.1.0-fix12.patch
Patch13: esc-1.1.0-fix13.patch
Patch14: esc-1.1.0-fix14.patch
+Patch15: esc-1.1.0-fix15.patch
BuildRequires: doxygen fontconfig-devel freetype-devel >= 2.1
BuildRequires: glib2-devel libIDL-devel atk-devel gtk2-devel libjpeg-devel
@@ -58,12 +67,12 @@ AutoReqProv: 0
%define escxuldir src/app/xul/esc
%define escxulchromeicons %{escxuldir}/chrome/icons/default
%define escdaemon escd
+%define geckoversion 16.0.2
-
-Source0: %{escname}.tar.bz2
-Source1: esc
-Source2: esc.desktop
-Source3: esc.png
+Source0: http://pki.fedoraproject.org/pki/sources/%name/%{escname}.tar.bz2
+Source1: http://pki.fedoraproject.org/pki/sources/%name/esc
+Source2: http://pki.fedoraproject.org/pki/sources/%name/esc.desktop
+Source3: http://pki.fedoraproject.org/pki/sources/%name/esc.png
%description
@@ -90,12 +99,14 @@ cryptographic smartcards.
%patch12 -p1 -b .fix12
%patch13 -p1 -b .fix13
%patch14 -p1 -b .fix14
+%patch15 -p1 -b .fix15
%build
-GECKO_SDK_PATH=%{_libdir}/xulrunner-devel-2/sdk
-GECKO_BIN_PATH=%{_libdir}/xulrunner-2
-GECKO_INCLUDE_PATH=%{_includedir}/xulrunner-2
+GECKO_SDK_PATH=%{_libdir}/xulrunner-devel-%{geckoversion}/sdk
+GECKO_BIN_PATH=%{_libdir}/xulrunner
+GECKO_INCLUDE_PATH=%{_includedir}/xulrunner-%{geckoversion}
+GECKO_IDL_PATH=/usr/share/idl/xulrunner-%{geckoversion}
%ifarch x86_64 ppc64 ia64
USE_64=1
@@ -105,6 +116,7 @@ export USE_64
export GECKO_SDK_PATH
export GECKO_BIN_PATH
export GECKO_INCLUDE_PATH
+export GECKO_IDL_PATH
# last setup call moved the current directory
cd esc
@@ -213,6 +225,8 @@ if [ -x %{_bindir}/gtk-update-icon-cache ]; then
fi
%changelog
+* Wed Nov 21 2012 Jack Magne <jmagne at redhat.com>= 1.1.0-19
+- Pick up latest fixes.
* Thu Jul 19 2012 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 1.1.0-18
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
More information about the scm-commits
mailing list