From: Jonathan Dieter Date: Tue, 4 Apr 2023 20:11:12 +0000 (+0100) Subject: Handle read_data errors correctly X-Git-Tag: archive/raspbian/1.3.1+ds1-1+rpi1^2~5^2~2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=e9e393ae40d016541d28ba7059d33a4fffb2e6ed;p=zchunk.git Handle read_data errors correctly The read_data function returns the number of bytes written, not a boolean, so fix the error checking so we exit if fewer than expected bytes were read. Thanks to Agostino Sarubbo of Gentoo for providing a bug report with a reproducible test case. Signed-off-by: Jonathan Dieter --- diff --git a/src/lib/header.c b/src/lib/header.c index 565071e..7253207 100644 --- a/src/lib/header.c +++ b/src/lib/header.c @@ -101,8 +101,10 @@ static bool read_header_from_file(zckCtx *zck) { zck_log(ZCK_LOG_DEBUG, "Reading the rest of the header: %llu bytes", (long long unsigned) zck->header_length); if(loaded < zck->header_length) { - if(!read_data(zck, header + loaded, zck->header_length - loaded)) + if(read_data(zck, header + loaded, zck->header_length - loaded) < zck->header_length - loaded) { + set_fatal_error(zck, "Unable to read %llu bytes from the file", zck->header_length - loaded); return false; + } zck->header_size = zck->lead_size + zck->header_length; }