libbpf: Fix theoretical u32 underflow in find_cd() function
authorDaniel Müller <deso@posteo.net>
Tue, 7 Mar 2023 21:55:04 +0000 (21:55 +0000)
committerAndrii Nakryiko <andrii@kernel.org>
Tue, 7 Mar 2023 23:30:47 +0000 (15:30 -0800)
Coverity reported a potential underflow of the offset variable used in
the find_cd() function. Switch to using a signed 64 bit integer for the
representation of offset to make sure we can never underflow.

Fixes: 1eebcb60633f ("libbpf: Implement basic zip archive parsing support")
Signed-off-by: Daniel Müller <deso@posteo.net>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20230307215504.837321-1-deso@posteo.net
tools/lib/bpf/zip.c

index 8458c2dd0e3bcbfd937fc18277baeb1fc390476c..f561aa07438f59a6cbf0c8344c8ab4aa0e806da2 100644 (file)
@@ -168,9 +168,8 @@ static int try_parse_end_of_cd(struct zip_archive *archive, __u32 offset)
 
 static int find_cd(struct zip_archive *archive)
 {
+       int64_t limit, offset;
        int rc = -EINVAL;
-       int64_t limit;
-       __u32 offset;
 
        if (archive->size <= sizeof(struct end_of_cd_record))
                return -EINVAL;