[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#859756: marked as done (unblock: xapian-core/1.4.3-2)



Your message dated Wed, 12 Apr 2017 16:21:00 +0000
with message-id <267ca027-60f9-e04a-3956-0bb6e95aade1@thykier.net>
and subject line Re: unblock: xapian-core/1.4.3-2
has caused the Debian Bug report #859756,
regarding unblock: xapian-core/1.4.3-2
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
859756: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=859756
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock

Please unblock package xapian-core 1.4.3-2.  It's successfully built
on all release architectures (and most non-release ones).

This upload fixes important severity bug #857693 which is an upstream
bug which can lead to incorrect results being returned for queries
with certain boolean filters:

https://bugs.debian.org/857693

There are no other changes over 1.4.3-1, the version in testing.

I've attached a debdiff, which is the fix cherry-picked from upstream
git.  Most of the size is actually test coverage for the change in
the patch, so for easy review I've also attached a version of the
debdiff with that added test coverage removed.

In case you're not familiar with C++ details the key difference here
is that the new version initialises the allocated array to be all
0.0 (the old version left the memory uninitialised):

-      max_wt = new double [n_kids];
+      max_wt = new double [n_kids]();

unblock xapian-core/1.4.3-2

Cheers,
    Olly
diff -Nru xapian-core-1.4.3/debian/changelog xapian-core-1.4.3/debian/changelog
--- xapian-core-1.4.3/debian/changelog	2017-01-25 14:40:08.000000000 +1300
+++ xapian-core-1.4.3/debian/changelog	2017-04-06 06:48:18.000000000 +1200
@@ -1,3 +1,10 @@
+xapian-core (1.4.3-2) unstable; urgency=medium
+
+  * Fix incorrect results for unweighted AND with certain subqueries (new
+    patch fix-unweighted-and.patch).  (Closes: #857693)
+
+ -- Olly Betts <olly@survex.com>  Thu, 06 Apr 2017 06:48:18 +1200
+
 xapian-core (1.4.3-1) unstable; urgency=medium
 
   * New upstream release
diff -Nru xapian-core-1.4.3/debian/patches/fix-unweighted-and.patch xapian-core-1.4.3/debian/patches/fix-unweighted-and.patch
--- xapian-core-1.4.3/debian/patches/fix-unweighted-and.patch	1970-01-01 12:00:00.000000000 +1200
+++ xapian-core-1.4.3/debian/patches/fix-unweighted-and.patch	2017-04-06 06:48:18.000000000 +1200
@@ -0,0 +1,66 @@
+Description: Fix incorrect results due to uninitialised memory
+    The array holding max weight values in MultiAndPostList is never
+    initialised if the operator is unweighted, but the values are still
+    used to calculate the max weight to pass to subqueries, leading to
+    incorrect results.  This can be observed with an OR under an unweighted
+    AND (e.g. OR under AND on the right side of AND_NOT).
+    
+    The fix applied is to simply default initialise this array, which
+    should lead to a max weight of 0.0 being passed on to subqueries.
+    
+    Bug reported in notmuch by Kirill A. Shutemov, and forwarded by
+    David Bremner.
+Author: Olly Betts <olly@survex.com>
+Bug-Debian: https://bugs.debian.org/857693
+Origin: upstream
+Last-Update: 2017-04-06
+
+--- a/matcher/multiandpostlist.cc
++++ b/matcher/multiandpostlist.cc
+@@ -32,7 +32,7 @@
+ {
+     plist = new PostList * [n_kids];
+     try {
+-	max_wt = new double [n_kids];
++	max_wt = new double [n_kids]();
+     } catch (...) {
+ 	delete [] plist;
+ 	plist = NULL;
+--- a/tests/api_query.cc
++++ b/tests/api_query.cc
+@@ -658,3 +658,18 @@
+ 
+     return true;
+ }
++
++// Regression test for bug fixed in 1.4.4 and 1.2.25.
++DEFINE_TESTCASE(notandor1, backend) {
++    Xapian::Database db(get_database("etext"));
++    Xapian::Query q =
++	Xapian::Query("the") &~ (Xapian::Query("friedrich") &
++		(Xapian::Query("day") | Xapian::Query("night")));
++    Xapian::Enquire enq(db);
++    enq.set_query(q);
++
++    Xapian::MSet mset = enq.get_mset(0, 10, db.get_doccount());
++    TEST_EQUAL(mset.get_matches_estimated(), 344);
++
++    return true;
++}
+--- a/tests/api_collated.h
++++ b/tests/api_collated.h
+@@ -301,6 +301,7 @@
+ 	    { "zeroestimate1", test_zeroestimate1 },
+ 	    { "complexphrase3", test_complexphrase3 },
+ 	    { "complexnear3", test_complexnear3 },
++	    { "notandor1", test_notandor1 },
+ 	    { "wildquery1", test_wildquery1 },
+ 	    { "snippet1", test_snippet1 },
+ 	    { "snippetstem1", test_snippetstem1 },
+--- a/tests/api_query.h
++++ b/tests/api_query.h
+@@ -21,3 +21,4 @@
+ extern bool test_complexphrase3();
+ extern bool test_complexnear3();
+ extern bool test_subdbwithoutpos1();
++extern bool test_notandor1();
diff -Nru xapian-core-1.4.3/debian/patches/series xapian-core-1.4.3/debian/patches/series
--- xapian-core-1.4.3/debian/patches/series	1970-01-01 12:00:00.000000000 +1200
+++ xapian-core-1.4.3/debian/patches/series	2017-04-06 06:48:13.000000000 +1200
@@ -0,0 +1 @@
+fix-unweighted-and.patch
diff -Nru xapian-core-1.4.3/debian/changelog xapian-core-1.4.3/debian/changelog
--- xapian-core-1.4.3/debian/changelog	2017-01-25 14:40:08.000000000 +1300
+++ xapian-core-1.4.3/debian/changelog	2017-04-06 06:48:18.000000000 +1200
@@ -1,3 +1,10 @@
+xapian-core (1.4.3-2) unstable; urgency=medium
+
+  * Fix incorrect results for unweighted AND with certain subqueries (new
+    patch fix-unweighted-and.patch).  (Closes: #857693)
+
+ -- Olly Betts <olly@survex.com>  Thu, 06 Apr 2017 06:48:18 +1200
+
 xapian-core (1.4.3-1) unstable; urgency=medium
 
   * New upstream release
diff -Nru xapian-core-1.4.3/debian/patches/fix-unweighted-and.patch xapian-core-1.4.3/debian/patches/fix-unweighted-and.patch
--- xapian-core-1.4.3/debian/patches/fix-unweighted-and.patch	1970-01-01 12:00:00.000000000 +1200
+++ xapian-core-1.4.3/debian/patches/fix-unweighted-and.patch	2017-04-06 06:48:18.000000000 +1200
@@ -0,0 +1,66 @@
+Description: Fix incorrect results due to uninitialised memory
+    The array holding max weight values in MultiAndPostList is never
+    initialised if the operator is unweighted, but the values are still
+    used to calculate the max weight to pass to subqueries, leading to
+    incorrect results.  This can be observed with an OR under an unweighted
+    AND (e.g. OR under AND on the right side of AND_NOT).
+    
+    The fix applied is to simply default initialise this array, which
+    should lead to a max weight of 0.0 being passed on to subqueries.
+    
+    Bug reported in notmuch by Kirill A. Shutemov, and forwarded by
+    David Bremner.
+Author: Olly Betts <olly@survex.com>
+Bug-Debian: https://bugs.debian.org/857693
+Origin: upstream
+Last-Update: 2017-04-06
+
+--- a/matcher/multiandpostlist.cc
++++ b/matcher/multiandpostlist.cc
+@@ -32,7 +32,7 @@
+ {
+     plist = new PostList * [n_kids];
+     try {
+-	max_wt = new double [n_kids];
++	max_wt = new double [n_kids]();
+     } catch (...) {
+ 	delete [] plist;
+ 	plist = NULL;
diff -Nru xapian-core-1.4.3/debian/patches/series xapian-core-1.4.3/debian/patches/series
--- xapian-core-1.4.3/debian/patches/series	1970-01-01 12:00:00.000000000 +1200
+++ xapian-core-1.4.3/debian/patches/series	2017-04-06 06:48:13.000000000 +1200
@@ -0,0 +1 @@
+fix-unweighted-and.patch

Attachment: signature.asc
Description: PGP signature


--- End Message ---
--- Begin Message ---
On Fri, 7 Apr 2017 12:13:23 +1200 Olly Betts <olly@survex.com> wrote:
> Package: release.debian.org
> Severity: normal
> User: release.debian.org@packages.debian.org
> Usertags: unblock
> 
> Please unblock package xapian-core 1.4.3-2.  It's successfully built
> on all release architectures (and most non-release ones).
> 
> This upload fixes important severity bug #857693 which is an upstream
> bug which can lead to incorrect results being returned for queries
> with certain boolean filters:
> 
> https://bugs.debian.org/857693
> 
> There are no other changes over 1.4.3-1, the version in testing.
> 
> I've attached a debdiff, which is the fix cherry-picked from upstream
> git.  Most of the size is actually test coverage for the change in
> the patch, so for easy review I've also attached a version of the
> debdiff with that added test coverage removed.
> 
> In case you're not familiar with C++ details the key difference here
> is that the new version initialises the allocated array to be all
> 0.0 (the old version left the memory uninitialised):
> 
> -      max_wt = new double [n_kids];
> +      max_wt = new double [n_kids]();
> 
> unblock xapian-core/1.4.3-2
> 
> Cheers,
>     Olly

Already migrated, thanks.

~Niels

--- End Message ---

Reply to: