Blob Blame History Raw
--- unzip-5.52/unix/unix.c.toctou	2005-12-20 13:28:52.000000000 +0100
+++ unzip-5.52/unix/unix.c	2005-12-20 13:52:02.773125776 +0100
@@ -1043,6 +1043,17 @@
     int have_uidgid_flg;
 
     fchmod(fileno(G.outfile), 0400);
+    
+/*---------------------------------------------------------------------------
+    Change the file permissions from default ones to those stored in the
+    zipfile. It is necessary to change permissions before fclose command.
+  ---------------------------------------------------------------------------*/
+
+#ifndef NO_CHMOD
+    if (fchmod(fileno(G.outfile), 0xffff & G.pInfo->file_attr))
+          perror("chmod (file attributes) error");
+#endif
+    
     fclose(G.outfile);
 
 /*---------------------------------------------------------------------------
@@ -1155,16 +1166,6 @@
 #endif /* ?AOS_VS */
     }
 
-/*---------------------------------------------------------------------------
-    Change the file permissions from default ones to those stored in the
-    zipfile.
-  ---------------------------------------------------------------------------*/
-
-#ifndef NO_CHMOD
-    if (chmod(G.filename, filtattr(__G__ G.pInfo->file_attr)))
-        perror("chmod (file attributes) error");
-#endif
-
 } /* end function close_outfile() */
 
 #endif /* !MTS */