summaryrefslogtreecommitdiff
blob: e35080f86db8d1be15888bf3afcf6027eca56c52 (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
Mihai Limbasan writes:
BZ2_bzclose fails to perform a NULL pointer check before actually
using the passed BZFILE * argument. The NULL check *is* performed but
only after the argument is used for the first time, resulting in a
potential NULL pointer dereference.

http://bugs.gentoo.org/show_bug.cgi?id=75305

Sent upstream but no feedback thus far :(
diff -Naur bzip2-1.0.2-orig/bzlib.c bzip2-1.0.2/bzlib.c
--- bzip2-1.0.2-orig/bzlib.c	2002-01-05 02:48:41.000000000 +0200
+++ bzip2-1.0.2/bzlib.c	2004-12-22 15:12:52.824593032 +0200
@@ -1536,9 +1536,12 @@
 void BZ_API(BZ2_bzclose) (BZFILE* b)
 {
    int bzerr;
-   FILE *fp = ((bzFile *)b)->handle;
-   
+   FILE *fp;
+
    if (b==NULL) {return;}
+
+   fp = ((bzFile *)b)->handle;
+
    if(((bzFile*)b)->writing){
       BZ2_bzWriteClose(&bzerr,b,0,NULL,NULL);
       if(bzerr != BZ_OK){