Commit 3ecde218 authored by Daniel Müller's avatar Daniel Müller Committed by Andrii Nakryiko

libbpf: Fix theoretical u32 underflow in find_cd() function

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: 1eebcb60 ("libbpf: Implement basic zip archive parsing support")
Signed-off-by: default avatarDaniel Müller <deso@posteo.net>
Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20230307215504.837321-1-deso@posteo.net
parent a73dc912
...@@ -168,9 +168,8 @@ static int try_parse_end_of_cd(struct zip_archive *archive, __u32 offset) ...@@ -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) static int find_cd(struct zip_archive *archive)
{ {
int64_t limit, offset;
int rc = -EINVAL; int rc = -EINVAL;
int64_t limit;
__u32 offset;
if (archive->size <= sizeof(struct end_of_cd_record)) if (archive->size <= sizeof(struct end_of_cd_record))
return -EINVAL; return -EINVAL;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment