Last upload for mozilla-based products

Mike Hommey mh at glandium.org
Thu Mar 15 11:49:52 CET 2007


On Wed, Mar 14, 2007 at 04:26:18AM -0700, Steve Langasek <vorlon at debian.org> wrote:
> > - Upstream is releasing a regression fix release that fixes the
> >   following issues:
> >   https://bugzilla.mozilla.org/show_bug.cgi?id=370559
> >   https://bugzilla.mozilla.org/show_bug.cgi?id=371576
> >   https://bugzilla.mozilla.org/show_bug.cgi?id=373181
> >   https://bugzilla.mozilla.org/show_bug.cgi?id=371925
> >   https://bugzilla.mozilla.org/show_bug.cgi?id=370136
> >   https://bugzilla.mozilla.org/show_bug.cgi?id=371525
> 
> At least some of these are security fixes; of course we should have those,
> but it's also not necessarily the case that they need to get into testing
> before the release.  For others, well, no software is perfect, and at some
> point it's better for stable to be able to know what bugs we have than to
> try to fix all the bugs that appear.
> 
> With that proviso, if there are fixes you think we should have, please go
> ahead with uploading them; but the longer we have to wait on an upstream
> release in order to get them, the more likely it is that the release team
> will judge the risks too high to be included so soon before release. 
> (Sorry, can't be more exact than that without seeing exactly what's going to
> be uploaded.)

FYI, attached to this mail are the diffs between the versions we
currently have in debian and the versions that are going to be released
upstream.
1.8.0branch is the patch for all stuff based on mozilla 1.8.0, i.e.
iceape, xulrunner and icedove, AND for stuff based on mozilla 1.8.1,
i.e. iceweasel.
1.8branch is a fix specific to mozilla 1.8.1, i.e. iceweasel.

These patches have been purged of all version information changes (such
as changes to module.ver, version.txt, milestone.txt, etc.)

Mike
-------------- next part --------------
--- content/base/src/nsScriptLoader.cpp
+++ content/base/src/nsScriptLoader.cpp
@@ -213,6 +213,7 @@
 nsScriptLoader::nsScriptLoader()
   : mDocument(nsnull),
     mEnabled(PR_TRUE),
+    mHadPendingScripts(PR_FALSE),
     mBlockerCount(0)
 {
 }
--- content/base/src/nsScriptLoader.h
+++ content/base/src/nsScriptLoader.h
@@ -90,12 +90,25 @@
    */
   void AddExecuteBlocker()
   {
-    ++mBlockerCount;
+    if (!mBlockerCount++) {
+      mHadPendingScripts = mPendingRequests.Count() != 0;
+    }
   }
   void RemoveExecuteBlocker()
   {
     if (!--mBlockerCount) {
-      ProcessPendingRequestsAsync();
+      // If there were pending scripts then the newly added scripts will
+      // execute once whatever event triggers the pending scripts fires.
+      // However, due to synchronous loads and pushed event queues it's
+      // possible that the requests that were there have already been processed
+      // if so we need to process any new requests asynchronously.
+      // Ideally that should be fixed such that it can't happen.
+      if (mHadPendingScripts) {
+        ProcessPendingRequestsAsync();
+      }
+      else {
+        ProcessPendingReqests();
+      }
     }
   }
 
@@ -130,6 +143,7 @@
   nsCOMArray<nsScriptLoadRequest> mPendingRequests;
   nsCOMPtr<nsIScriptElement> mCurrentScript;
   PRBool mEnabled;
+  PRBool mHadPendingScripts;
   PRUint32 mBlockerCount;
 };
 
--- content/html/content/src/nsGenericHTMLElement.cpp
+++ content/html/content/src/nsGenericHTMLElement.cpp
@@ -919,6 +919,10 @@
 nsresult
 nsGenericHTMLElement::SetInnerHTML(const nsAString& aInnerHTML)
 {
+  // This BeginUpdate/EndUpdate pair is important to make us reenable the
+  // scriptloader before the last EndUpdate call.
+  mozAutoDocUpdate updateBatch(GetCurrentDoc(), UPDATE_CONTENT_MODEL, PR_TRUE);
+
   nsresult rv = NS_OK;
 
   nsCOMPtr<nsIDOMRange> range = new nsRange;
--- layout/tables/nsTableFrame.cpp
+++ layout/tables/nsTableFrame.cpp
@@ -2576,8 +2576,12 @@
 
   if (aPrevFrame) {
     const nsStyleDisplay* prevDisplay = aPrevFrame->GetStyleDisplay();
-    if (display->mDisplay != prevDisplay->mDisplay) {
+    // Make sure they belong on the same frame list
+    if ((display->mDisplay == NS_STYLE_DISPLAY_TABLE_COLUMN_GROUP) !=
+        (prevDisplay->mDisplay == NS_STYLE_DISPLAY_TABLE_COLUMN_GROUP)) {
       // the previous frame is not valid, see comment at ::AppendFrames
+      // XXXbz Using content indices here means XBL will get screwed
+      // over...  Oh, well.
       nsIFrame* pseudoFrame = aFrameList;
       nsIContent* parentContent = GetContent();
       nsIContent* content;
@@ -2597,7 +2601,8 @@
       else {
         kidFrame = mFrames.FirstChild();
       }
-      PRInt32 lastIndex = 0;
+      // Important: need to start at a value smaller than all valid indices
+      PRInt32 lastIndex = -1;
       while (kidFrame) {
         if (isColGroup) {
           nsTableColGroupType groupType =
--- netwerk/protocol/ftp/src/nsFtpConnectionThread.cpp
+++ netwerk/protocol/ftp/src/nsFtpConnectionThread.cpp
@@ -1740,7 +1740,12 @@
     if (!response) return FTP_ERROR;
     char *ptr = response;
 
+    // Make sure to ignore the address in the PASV response (bug 370559)
     nsCAutoString host;
+    rv = mURL->GetAsciiHost(host);
+    if (NS_FAILED(rv))
+        return FTP_ERROR;
+
     if (mIPv6ServerAddress) {
         // The returned string is of the form
         // text (|||ppp|)
@@ -1801,13 +1806,6 @@
         }
 
         port = ((PRInt32) (p0<<8)) + p1;
-        host.AppendInt(h0);
-        host.Append('.');
-        host.AppendInt(h1);
-        host.Append('.');
-        host.AppendInt(h2);
-        host.Append('.');
-        host.AppendInt(h3);
     }
 
     nsMemory::Free(response);
--- toolkit/components/passwordmgr/base/nsPasswordManager.cpp
+++ toolkit/components/passwordmgr/base/nsPasswordManager.cpp
@@ -2039,8 +2039,9 @@
   nsCOMPtr<nsIForm> form = do_QueryInterface(formEl);
   nsCAutoString formActionOrigin;
   GetActionRealm(form, formActionOrigin);
-  if (NS_FAILED(GetActionRealm(form, formActionOrigin)) ||
-      !foundEntry->actionOrigin.Equals(formActionOrigin))
+  if (NS_FAILED(GetActionRealm(form, formActionOrigin)))
+    return NS_OK;
+  if (!foundEntry->actionOrigin.IsEmpty() && !foundEntry->actionOrigin.Equals(formActionOrigin))
     return NS_OK;
   
   nsCOMPtr<nsISupports> foundNode;
-------------- next part --------------
--- security/manager/ssl/src/nsNSSIOLayer.cpp
+++ security/manager/ssl/src/nsNSSIOLayer.cpp
@@ -78,6 +78,7 @@
 #include "secasn1.h"
 #include "certdb.h"
 #include "cert.h"
+#include "keyhi.h"
 
 
 //#define DEBUG_SSL_VERBOSE //Enable this define to get minimal 
@@ -2237,6 +2238,8 @@
       privKey = PK11_FindKeyByAnyCert(node->cert, wincx);
       if (privKey != NULL) {
         if (hasExplicitKeyUsageNonRepudiation(node->cert)) {
+          SECKEY_DestroyPrivateKey(privKey);
+          privKey = NULL;
           // Not a prefered cert
           if (!low_prio_nonrep_cert) // did not yet find a low prio cert
             low_prio_nonrep_cert = CERT_DupCertificate(node->cert);
@@ -2259,6 +2262,7 @@
     if (!cert && low_prio_nonrep_cert) {
       cert = low_prio_nonrep_cert;
       low_prio_nonrep_cert = NULL; // take it away from the cleaner
+      privKey = PK11_FindKeyByAnyCert(cert, wincx);
     }
 
     if (cert == NULL) {


More information about the pkg-mozilla-maintainers mailing list