SOURCES: pan-CVE-2008-2363.patch (NEW) - fix for CVE-2008-2363
megabajt
megabajt at pld-linux.org
Mon Jul 28 14:35:31 CEST 2008
Author: megabajt Date: Mon Jul 28 12:35:31 2008 GMT
Module: SOURCES Tag: HEAD
---- Log message:
- fix for CVE-2008-2363
---- Files affected:
SOURCES:
pan-CVE-2008-2363.patch (NONE -> 1.1) (NEW)
---- Diffs:
================================================================
Index: SOURCES/pan-CVE-2008-2363.patch
diff -u /dev/null SOURCES/pan-CVE-2008-2363.patch:1.1
--- /dev/null Mon Jul 28 14:35:32 2008
+++ SOURCES/pan-CVE-2008-2363.patch Mon Jul 28 14:35:26 2008
@@ -0,0 +1,93 @@
+https://bugs.gentoo.org/show_bug.cgi?id=224051
+https://bugzilla.gnome.org/show_bug.cgi?id=535413
+https://bugzilla.redhat.com/show_bug.cgi?id=446902
+
+--- pan-0.132/pan/data/parts.cc
++++ pan-0.132/pan/data/parts.cc
+@@ -303,8 +303,7 @@
+ this->n_parts_total = n_parts_total;
+ this->n_parts_found = 0; // they haven't been added yet
+
+- if (n_parts_found > parts.size())
+- parts.resize (n_parts_found);
++ parts.clear();
+ }
+
+ void
+@@ -312,21 +311,10 @@
+ const StringView & mid,
+ bytes_t bytes)
+ {
+- if (n_parts_found >= parts.size())
+- parts.resize (n_parts_found+1);
+-
+- Part& p = *(&parts.front() + n_parts_found++);
+- p.number = number;
+- p.bytes = bytes;
+
+ Packer packer;
+ pack_message_id (packer, mid, reference_mid);
+- p.len_used = packer.size ();
+- if (p.len_alloced < p.len_used) {
+- delete [] p.packed_mid;
+- p.packed_mid = new char [p.len_used];
+- p.len_alloced = p.len_used;
+- }
++ Part p(number,bytes,packer.size());
+ packer.pack (p.packed_mid);
+ packed_mids_len += p.len_used;
+
+@@ -337,8 +325,9 @@
+ assert (mid == tmp);
+ #endif
+
+- if (n_parts_total < n_parts_found)
++ if (n_parts_total < ++n_parts_found)
+ n_parts_total = n_parts_found;
++ parts.push_back(p);
+ }
+
+ PartBatch :: Part&
+@@ -346,7 +335,7 @@
+ {
+ number = that.number;
+ bytes = that.bytes;
+- len_used = len_alloced = that.len_used;
++ len_used = that.len_used;
+ delete [] packed_mid;
+ packed_mid = new char [len_used];
+ memcpy (packed_mid, that.packed_mid, len_used);
+@@ -357,11 +346,17 @@
+ number (that.number),
+ bytes (that.bytes),
+ len_used (that.len_used),
+- len_alloced (that.len_used),
+ packed_mid (new char [len_used])
+ {
+ memcpy (packed_mid, that.packed_mid, len_used);
+ }
++PartBatch :: Part :: Part (number_t n, bytes_t b, size_t l):
++ number(n),
++ bytes(b),
++ len_used(l),
++ packed_mid(new char [len_used])
++{
++}
+
+ void
+ PartBatch :: sort (void)
+--- pan-0.132/pan/data/parts.h
++++ pan-0.132/pan/data/parts.h
+@@ -141,10 +141,10 @@
+ number_t number;
+ bytes_t bytes;
+ size_t len_used;
+- size_t len_alloced;
+ char * packed_mid;
+ Part(): number(0), bytes(0),
+- len_used(0), len_alloced(0), packed_mid(0) {}
++ len_used(0), packed_mid(0) {}
++ Part(number_t n, bytes_t b, size_t l);
+ ~Part() { delete [] packed_mid; }
+ Part (const Part&);
+ Part& operator= (const Part&);
================================================================
More information about the pld-cvs-commit
mailing list