summaryrefslogtreecommitdiff
path: root/debian/patches/0010-Fix-handling-of-mmap-errors.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/0010-Fix-handling-of-mmap-errors.patch')
-rw-r--r--debian/patches/0010-Fix-handling-of-mmap-errors.patch51
1 files changed, 51 insertions, 0 deletions
diff --git a/debian/patches/0010-Fix-handling-of-mmap-errors.patch b/debian/patches/0010-Fix-handling-of-mmap-errors.patch
new file mode 100644
index 0000000..0c55cfe
--- /dev/null
+++ b/debian/patches/0010-Fix-handling-of-mmap-errors.patch
@@ -0,0 +1,51 @@
+From: Daniel Veillard <veillard@redhat.com>
+Date: Fri, 12 Jul 2013 12:08:40 +0800
+Subject: Fix handling of mmap errors
+
+https://bugzilla.gnome.org/show_bug.cgi?id=702320
+
+as raised by Gaurav <ya1gaurav@gmail.com>
+---
+ xmllint.c | 13 +++++++++++--
+ 1 file changed, 11 insertions(+), 2 deletions(-)
+
+diff --git a/xmllint.c b/xmllint.c
+index 4d464e4..92e6b03 100644
+--- a/xmllint.c
++++ b/xmllint.c
+@@ -1837,8 +1837,12 @@ static void streamFile(char *filename) {
+ if ((fd = open(filename, O_RDONLY)) < 0)
+ return;
+ base = mmap(NULL, info.st_size, PROT_READ, MAP_SHARED, fd, 0) ;
+- if (base == (void *) MAP_FAILED)
++ if (base == (void *) MAP_FAILED) {
++ close(fd);
++ fprintf(stderr, "mmap failure for file %s\n", filename);
++ progresult = XMLLINT_ERR_RDFILE;
+ return;
++ }
+
+ reader = xmlReaderForMemory(base, info.st_size, filename,
+ NULL, options);
+@@ -2223,8 +2227,12 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
+ if ((fd = open(filename, O_RDONLY)) < 0)
+ return;
+ base = mmap(NULL, info.st_size, PROT_READ, MAP_SHARED, fd, 0) ;
+- if (base == (void *) MAP_FAILED)
++ if (base == (void *) MAP_FAILED) {
++ close(fd);
++ fprintf(stderr, "mmap failure for file %s\n", filename);
++ progresult = XMLLINT_ERR_RDFILE;
+ return;
++ }
+
+ doc = htmlReadMemory((char *) base, info.st_size, filename,
+ NULL, options);
+@@ -2339,6 +2347,7 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
+ return;
+ base = mmap(NULL, info.st_size, PROT_READ, MAP_SHARED, fd, 0) ;
+ if (base == (void *) MAP_FAILED) {
++ close(fd);
+ fprintf(stderr, "mmap failure for file %s\n", filename);
+ progresult = XMLLINT_ERR_RDFILE;
+ return;