On 1/28/26 5:32 AM, Heinrich Schuchardt wrote:

Hello Heinrich,

diff --git a/include/gzip.h b/include/gzip.h
index 304002ffc42..5396e3ffec7 100644
--- a/include/gzip.h
+++ b/include/gzip.h
@@ -77,8 +77,8 @@ void gzwrite_progress_finish(int retcode, ulong totalwritten, 
ulong totalsize,
  *             for files under 4GiB
  * Return: 0 if OK, -1 on error
p */
-int gzwrite(unsigned char *src, int len, struct blk_desc *dev, ulong 
szwritebuf,
-           ulong startoffs, ulong szexpected);
+int gzwrite(unsigned char *src, unsigned long len, struct blk_desc *dev,
+           ulong szwritebuf, ulong startoffs, ulong szexpected);

Ulong and unsigned long are essentially the same but using both in one function 
signature looks weird.

I would prefer size_t for the size of objects in memory and off_t for file 
sizes and positions in files.

Please, consider adjusting startoffs and szexpected, too.

OK

/**
  * gzip()- Compress data into a buffer using the gzip algorithm
diff --git a/lib/gunzip.c b/lib/gunzip.c
index a05dcde9a75..040450c0e79 100644
--- a/lib/gunzip.c
+++ b/lib/gunzip.c
@@ -116,11 +116,8 @@ void gzwrite_progress_finish(int returnval,
        }
}

-int gzwrite(unsigned char *src, int len,
-           struct blk_desc *dev,
-           unsigned long szwritebuf,
-           ulong startoffs,
-           ulong szexpected)
+int gzwrite(unsigned char *src, unsigned long len, struct blk_desc *dev,
+           ulong szwritebuf, ulong startoffs, ulong szexpected)

ditto

{
        int i, flags;
        z_stream s;
@@ -133,6 +130,12 @@ int gzwrite(unsigned char *src, int len,
        u32 payload_size;
        int iteration = 0;

+       if (len > 0xffffffff) {
+               printf("%s: input size over 4 GiB in size not supported\n",
+                      __func__);

Please, use log_err() for error output.
I believe log_*() primitives are frowned upon ? Tom ?

Reply via email to