[Debian-ha-maintainers] Bug#731967: debdiff of NMU of libqb 0.16.0.real-1.1

Aníbal Monsalve Salazar anibal at debian.org
Thu Feb 20 07:54:43 UTC 2014


debdiff libqb_0.16.0.real-1.dsc libqb_0.16.0.real-1.1.dsc
diff -Nru libqb-0.16.0.real/debian/changelog libqb-0.16.0.real/debian/changelog
--- libqb-0.16.0.real/debian/changelog	2013-08-02 06:39:15.000000000 +0100
+++ libqb-0.16.0.real/debian/changelog	2014-02-20 07:32:10.000000000 +0000
@@ -1,3 +1,15 @@
+libqb (0.16.0.real-1.1) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * Do not overwrite memory during reading
+    Add test_ring_buffer1.diff
+    Patch by Dejan Latinovic
+    Closes: #731967
+  * Pass --localstatedir=`pwd`/var to configure to not fail the
+    tests when it's built with pbuilder
+
+ -- Anibal Monsalve Salazar <anibal at debian.org>  Thu, 20 Feb 2014 07:21:30 +0000
+
 libqb (0.16.0.real-1) unstable; urgency=low
 
   * New upload, this time with the "right" upstream .orig.tar.gz
diff -Nru libqb-0.16.0.real/debian/patches/series libqb-0.16.0.real/debian/patches/series
--- libqb-0.16.0.real/debian/patches/series	2013-08-02 07:03:11.000000000 +0100
+++ libqb-0.16.0.real/debian/patches/series	2014-02-19 10:33:58.000000000 +0000
@@ -1 +1,2 @@
 fix_version_number.patch
+test_ring_buffer1.diff
diff -Nru libqb-0.16.0.real/debian/patches/test_ring_buffer1.diff libqb-0.16.0.real/debian/patches/test_ring_buffer1.diff
--- libqb-0.16.0.real/debian/patches/test_ring_buffer1.diff	1970-01-01 01:00:00.000000000 +0100
+++ libqb-0.16.0.real/debian/patches/test_ring_buffer1.diff	2014-02-14 12:50:15.000000000 +0000
@@ -0,0 +1,66 @@
+Author: "Dejan Latinovic" <Dejan.Latinovic at rt-rk.com>
+Description: Fix for ring buffer test.
+
+http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=731967
+
+After I ran rb.test manually I got this error:
+
+< Running suite(s): ringbuffer
+< 75%: Checks: 4, Failures: 0, Errors: 1
+< check_rb.c:82:E:test01:test_ring_buffer1:0: (after this point) Received < < signal 11 (Segmentation fault)
+< check_rb.c:123:P:test02:test_ring_buffer2:0: Passed
+< check_rb.c:155:P:test03:test_ring_buffer3:0: Passed
+< check_rb.c:183:P:test04:test_ring_buffer4:0: Passed
+
+
+The problem is that test_ring_buffer1 in ./tests/check_rb.c,
+at line:
+< actual = qb_rb_chunk_read(rb, &hdr, 512, 0);
+
+is attempting to read chunk from ring buffer
+< qb_ringbuffer_t *rb
+
+and store it into address of struct hdr
+< struct qb_ipc_request_header hdr;
+
+If the size of the chunk(90-93) is larger than size of the hdr (16),
+it comes to overwriting memory during reading.
+
+This test does not fail on some other architectures
+because there is a possibility that my_buf is located after hdr,
+< char my_buf[512];
+and then the overwriting passes unnoticed.
+
+A patch fixing this issue is attached.
+
+Index: libqb-0.16.0.real/tests/check_rb.c
+===================================================================
+--- libqb-0.16.0.real.orig/tests/check_rb.c	2013-12-09 14:28:57.000000000 +0000
++++ libqb-0.16.0.real/tests/check_rb.c	2013-12-09 14:31:15.000000000 +0000
+@@ -57,8 +57,9 @@
+ 				    hdr.id, "actually the line number", i,
+ 				    __func__, __FILE__) + 1;
+ 			hdr.size += sizeof(struct qb_ipc_request_header);
++			memcpy(my_buf, &hdr, sizeof(struct qb_ipc_request_header));
+ 			avail = qb_rb_space_free(rb);
+-			actual = qb_rb_chunk_write(rb, &hdr, hdr.size);
++			actual = qb_rb_chunk_write(rb, my_buf, hdr.size);
+ 			if (avail < (hdr.size + (3 * sizeof(uint32_t)))) {
+ 				ck_assert_int_eq(actual, -EAGAIN);
+ 			} else {
+@@ -72,13 +73,13 @@
+ 		str = my_buf + sizeof(struct qb_ipc_request_header);
+ 
+ 		for (i = 0; i < 15; i++) {
+-			actual = qb_rb_chunk_read(rb, &hdr, 512, 0);
++			actual = qb_rb_chunk_read(rb, my_buf, 512, 0);
+ 			if (actual < 0) {
+ 				ck_assert_int_eq(0, qb_rb_chunks_used(rb));
+ 				break;
+ 			}
++			memcpy(&hdr, my_buf, sizeof(struct qb_ipc_request_header));
+ 			str[actual - sizeof(struct qb_ipc_request_header)] = '\0';
+-
+ 			ck_assert_int_eq(actual, hdr.size);
+ 		}
+ 	}
diff -Nru libqb-0.16.0.real/debian/rules libqb-0.16.0.real/debian/rules
--- libqb-0.16.0.real/debian/rules	2013-03-20 23:03:33.000000000 +0000
+++ libqb-0.16.0.real/debian/rules	2014-02-20 07:20:49.000000000 +0000
@@ -17,3 +17,7 @@
 
 override_dh_autoreconf:
 	dh_autoreconf ./autogen.sh
+
+override_dh_auto_configure:
+	mkdir -p `pwd`/dev/shm `pwd`/var/run
+	dh_auto_configure -- --localstatedir=`pwd`/var



More information about the Debian-ha-maintainers mailing list