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 ?