summaryrefslogtreecommitdiffstats
path: root/libzip-0.11-php.patch
blob: dd12de97b91e235ecd5d997db7f63614ec4b2f60 (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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
diff -ru libzip-0.11.1.orig/lib/zip_close.c libzip-0.11.1/lib/zip_close.c
--- libzip-0.11.1.orig/lib/zip_close.c	2013-08-08 11:01:26.000000000 +0200
+++ libzip-0.11.1/lib/zip_close.c	2013-08-08 11:03:07.000000000 +0200
@@ -596,18 +596,22 @@
     FILE *tfp;
     
     if (za->tempdir) {
-        if ((temp=(char *)malloc(strlen(za->tempdir)+13)) == NULL) {
+        int len = strlen(za->tempdir)+13;
+
+        if ((temp=(char *)malloc(len)) == NULL) {
             _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
             return NULL;
         }
-        sprintf(temp, "%s/.zip.XXXXXX", za->tempdir);
+        snprintf(temp, len, "%s/.zip.XXXXXX", za->tempdir);
     }
     else {
-        if ((temp=(char *)malloc(strlen(za->zn)+8)) == NULL) {
+        int len = strlen(za->zn)+8;
+
+        if ((temp=(char *)malloc(len)) == NULL) {
             _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
             return NULL;
         }
-        sprintf(temp, "%s.XXXXXX", za->zn);
+        snprintf(temp, len, "%s.XXXXXX", za->zn);
     }
 
     if ((tfd=mkstemp(temp)) == -1) {
diff -ru libzip-0.11.1.orig/lib/zip_fclose.c libzip-0.11.1/lib/zip_fclose.c
--- libzip-0.11.1.orig/lib/zip_fclose.c	2013-08-08 11:01:26.000000000 +0200
+++ libzip-0.11.1/lib/zip_fclose.c	2013-08-08 11:06:46.000000000 +0200
@@ -48,14 +48,15 @@
     if (zf->src)
 	zip_source_free(zf->src);
 
-    for (i=0; i<zf->za->nfile; i++) {
-	if (zf->za->file[i] == zf) {
-	    zf->za->file[i] = zf->za->file[zf->za->nfile-1];
-	    zf->za->nfile--;
-	    break;
+	if (zf->za) {
+		for (i=0; i<zf->za->nfile; i++) {
+			if (zf->za->file[i] == zf) {
+				zf->za->file[i] = zf->za->file[zf->za->nfile-1];
+				zf->za->nfile--;
+				break;
+			}
+		}
 	}
-    }
-
     ret = 0;
     if (zf->error.zip_err)
 	ret = zf->error.zip_err;
--- libzip-0.11.1.orig/lib/zip.h	2013-08-08 11:01:26.000000000 +0200
+++ libzip-0.11.1/lib/zip.h	2013-08-08 11:19:57.000000000 +0200
@@ -62,6 +62,8 @@
 #define ZIP_EXCL             2
 #define ZIP_CHECKCONS        4
 #define ZIP_TRUNCATE         8
+/* PHP use this name, same behavior */
+#define ZIP_OVERWRITE        8
 
 
 /* flags for zip_name_locate, zip_fopen, zip_stat, ... */