[PATCH] fixup! libfile: copy_fd: add size argument
Ahmad Fatoum
a.fatoum at pengutronix.de
Fri Jan 23 13:58:13 PST 2026
libfile: copy_fd: fix use of zero to mean all content
The function documents that a size of zero means that all data is
copied, but this is currently broken: On first iteration both size and
copied will be zero, so now is set to zero leading to an early exit
without any data copied at all.
One way to fix this is to have size == SIZE_MAX be the way to mean copy
as much data as possible, but let's do as the documentation say and
handle 0 bytes as infinite.
Signed-off-by: Ahmad Fatoum <a.fatoum at pengutronix.de>
---
lib/libfile.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/lib/libfile.c b/lib/libfile.c
index bc79e58a82e4..0435fc4297e1 100644
--- a/lib/libfile.c
+++ b/lib/libfile.c
@@ -148,7 +148,12 @@ int copy_fd(int in, int out, size_t size)
return -ENOMEM;
while (1) {
- size_t now = min(bs, size - copied);
+ size_t now;
+
+ if (size)
+ now = min(bs, size - copied);
+ else
+ now = bs;
if (!now) {
ret = 0;
--
2.47.3
More information about the barebox
mailing list