summaryrefslogtreecommitdiffstats
path: root/extra/libxml2/zlib.patch
blob: 4bf486d1276c0efc39474503a0c26a2afee55e94 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
From a7e79f28689c574e0bbef17f4cb3da00249181ff Mon Sep 17 00:00:00 2001
From: Mark Adler <madler@alumni.caltech.edu>
Date: Tue, 19 Jan 2010 15:28:48 +0000
Subject: libxml violates the zlib interface and crashes

* xmlIO.c: remove an abuse of zlib API and use a clean interface
  available in zlib >= 1.2.3
---
diff --git a/xmlIO.c b/xmlIO.c
index c03ac43..8fc00e3 100644
--- a/xmlIO.c
+++ b/xmlIO.c
@@ -2518,6 +2518,9 @@ __xmlParserInputBufferCreateFilename(const char *URI, xmlCharEncoding enc) {
 #ifdef HAVE_ZLIB_H
 	if ((xmlInputCallbackTable[i].opencallback == xmlGzfileOpen) &&
 		(strcmp(URI, "-") != 0)) {
+#if defined(ZLIB_VERNUM) && ZLIB_VERNUM >= 0x1230
+            ret->compressed = !gzdirect(context);
+#else
 	    if (((z_stream *)context)->avail_in > 4) {
 	        char *cptr, buff4[4];
 		cptr = (char *) ((z_stream *)context)->next_in;
@@ -2529,6 +2532,7 @@ __xmlParserInputBufferCreateFilename(const char *URI, xmlCharEncoding enc) {
 		    gzrewind(context);
 		}
 	    }
+#endif
 	}
 #endif
     }
--
cgit v0.8.3.1