File libuser-0.56.13-get_matchingx-segfault.patch of Package libuser-python27

diff -ur libuser/lib/util.c libuser-0.56.13/lib/util.c
--- libuser/lib/util.c	2009-12-11 11:05:48.000000000 +0100
+++ libuser-0.56.13/lib/util.c	2012-02-13 11:50:43.678528860 +0100
@@ -325,6 +325,7 @@
 	off_t offset;
 	char *ret = NULL, *p;
 	gboolean mapped = FALSE;
+	size_t part_len;
 
 	LU_ERROR_CHECK(error);
 
@@ -356,6 +357,7 @@
 		mapped = TRUE;
 	}
 
+	part_len = strlen(part);
 	p = contents;
 	do {
 		char *buf, *q, *colon;
@@ -376,10 +378,12 @@
 			}
 		}
 
-		if (colon) {
-			if (strncmp(colon, part, strlen(part)) == 0) {
-				if ((colon[strlen(part)] == ':')
-				    || (colon[strlen(part)] == '\n')) {
+		if (colon != NULL
+		    && st.st_size - (colon - contents) >= part_len) {
+			if (strncmp(colon, part, part_len) == 0) {
+				if (colon + part_len == contents + st.st_size
+				    || colon[part_len] == ':'
+				    || colon[part_len] == '\n') {
 					size_t maxl;
 					maxl =
 					    st.st_size - (buf - contents);
openSUSE Build Service is sponsored by