[PATCH] fix gzip applet not to store timestamps

Rich Felker dalias at libc.org
Sun Feb 1 18:29:57 UTC 2015


Storing the original file's modification time in the output file is
harmful (precludes deterministic results) and unlike official gzip,
the busybox version provides no way to suppress this behavior; the -n
option is silently ignored. Rather than trying to make -n work, this
patch just removes the timestamp-storing functionality. It should be
considered deprecated anyway; it's not Y2038-safe and gunzip ignores
it by default.

Per RFC 1952, 0 is the correct value to store to indicate that there
is no timestamp.

Rich
-------------- next part --------------
diff --git a/archival/gzip.c b/archival/gzip.c
index 1e779c9..903577b 100644
--- a/archival/gzip.c
+++ b/archival/gzip.c
@@ -2007,7 +2007,7 @@ static void ct_init(void)
  * IN assertions: the input and output buffers are cleared.
  */
 
-static void zip(ulg time_stamp)
+static void zip()
 {
 	ush deflate_flags = 0;  /* pkzip -es, -en or -ex equivalent */
 
@@ -2018,7 +2018,7 @@ static void zip(ulg time_stamp)
 	/* compression method: 8 (DEFLATED) */
 	/* general flags: 0 */
 	put_32bit(0x00088b1f);
-	put_32bit(time_stamp);
+	put_32bit(0);
 
 	/* Write deflated file to zip file */
 	G1.crc = ~0;
@@ -2044,8 +2044,6 @@ static void zip(ulg time_stamp)
 static
 IF_DESKTOP(long long) int FAST_FUNC pack_gzip(transformer_aux_data_t *aux UNUSED_PARAM)
 {
-	struct stat s;
-
 	/* Clear input and output buffers */
 	G1.outcnt = 0;
 #ifdef DEBUG
@@ -2077,9 +2075,7 @@ IF_DESKTOP(long long) int FAST_FUNC pack_gzip(transformer_aux_data_t *aux UNUSED
 	G2.bl_desc.max_length  = MAX_BL_BITS;
 	//G2.bl_desc.max_code    = 0;
 
-	s.st_ctime = 0;
-	fstat(STDIN_FILENO, &s);
-	zip(s.st_ctime);
+	zip();
 	return 0;
 }
 


More information about the busybox mailing list