Kaynağa Gözat

* fix http data corruption (#280844)

Patches applied:

 * mvo@debian.org--2005/apt--debian-experimental--0--patch-12
   * added http data corruption fix patch (#280844)
Michael Vogt 20 yıl önce
ebeveyn
işleme
c5691ddf15
3 değiştirilmiş dosya ile 8 ekleme ve 11 silme
  1. 1 1
      configure.in
  2. 3 1
      debian/changelog
  3. 4 9
      methods/http.cc

+ 1 - 1
configure.in

@@ -18,7 +18,7 @@ AC_CONFIG_AUX_DIR(buildlib)
 AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in)
 
 dnl -- SET THIS TO THE RELEASE VERSION --
-AC_DEFINE_UNQUOTED(VERSION,"0.6.43.1")
+AC_DEFINE_UNQUOTED(VERSION,"0.6.43.2")
 PACKAGE="apt"
 AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE")
 AC_SUBST(PACKAGE)

+ 3 - 1
debian/changelog

@@ -9,8 +9,10 @@ apt (0.6.43.2) unstable; urgency=low
     - sk.po: Completed to 511t. Closes: #346369
     - fr.po: Completed to 511t
     - *.po: Updated from sources (511 strings)
+  * add patch to fix http download corruption problem (thanks to
+    Petr Vandrovec, closes: #280844, #290694)
 
- --
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 10 Jan 2006 17:09:31 +0100
 
 apt (0.6.43.1) unstable; urgency=low
 

+ 4 - 9
methods/http.cc

@@ -241,28 +241,23 @@ bool CircleBuf::WriteTillEl(string &Data,bool Single)
       if (Buf[I%Size] != '\n')
 	 continue;
       ++I;
-      if (I < InP  && Buf[I%Size] == '\r')
-         ++I;
       
       if (Single == false)
       {
-	 if (Buf[I%Size] != '\n')
-	    continue;
-         ++I;
          if (I < InP  && Buf[I%Size] == '\r')
             ++I;
+         if (I >= InP || Buf[I%Size] != '\n')
+            continue;
+         ++I;
       }
       
-      if (I > InP)
-	 I = InP;
-      
       Data = "";
       while (OutP < I)
       {
 	 unsigned long Sz = LeftWrite();
 	 if (Sz == 0)
 	    return false;
-	 if (I - OutP < LeftWrite())
+	 if (I - OutP < Sz)
 	    Sz = I - OutP;
 	 Data += string((char *)(Buf + (OutP%Size)),Sz);
 	 OutP += Sz;