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);