Re: [PATCH bpf-next v4 2/8] bpf: Remove truncation test in bpf_strtol and bpf_strtoul helpers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Sep 6, 2024 at 6:56 AM Daniel Borkmann <daniel@xxxxxxxxxxxxx> wrote:
>
> Both bpf_strtol() and bpf_strtoul() helpers passed a temporary "long long"
> respectively "unsigned long long" to __bpf_strtoll() / __bpf_strtoull().
>
> Later, the result was checked for truncation via _res != ({unsigned,} long)_res
> as the destination buffer for the BPF helpers was of type {unsigned,} long
> which is 32bit on 32bit architectures.
>
> Given the latter was a bug in the helper signatures where the destination buffer
> got adjusted to {s,u}64, the truncation check can now be removed.
>
> Signed-off-by: Daniel Borkmann <daniel@xxxxxxxxxxxxx>
> ---
>  v3 -> v4:
>  - added patch
>

Acked-by: Andrii Nakryiko <andrii@xxxxxxxxxx>


>  kernel/bpf/helpers.c | 4 ----
>  1 file changed, 4 deletions(-)
>
> diff --git a/kernel/bpf/helpers.c b/kernel/bpf/helpers.c
> index 0cf42be52890..5404bb964d83 100644
> --- a/kernel/bpf/helpers.c
> +++ b/kernel/bpf/helpers.c
> @@ -526,8 +526,6 @@ BPF_CALL_4(bpf_strtol, const char *, buf, size_t, buf_len, u64, flags,
>         err = __bpf_strtoll(buf, buf_len, flags, &_res);
>         if (err < 0)
>                 return err;
> -       if (_res != (long)_res)
> -               return -ERANGE;
>         *res = _res;
>         return err;
>  }
> @@ -554,8 +552,6 @@ BPF_CALL_4(bpf_strtoul, const char *, buf, size_t, buf_len, u64, flags,
>                 return err;
>         if (is_negative)
>                 return -EINVAL;
> -       if (_res != (unsigned long)_res)
> -               return -ERANGE;
>         *res = _res;
>         return err;
>  }
> --
> 2.43.0
>





[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux