I guess I’ve been doing it wrong all this time.

Perhaps you can tell me how the following doesn't return a 0-255 value.

uint64_t bufferToTime(const u_char buf[])
{

return (( (( (( (( (( (( ((
  (uint64_t) buf[7]) << 8)
                 | buf[6]) << 8)
                 | buf[5]) << 8)
                 | buf[4]) << 8)
                 | buf[3]) << 8)
                 | buf[2]) << 8)
                 | buf[1]) << 8)
                 | buf[0];
}

}

On Wed, Feb 17, 2021 at 12:05 PM Theo de Raadt <dera...@openbsd.org> wrote:

> Luke Small <lukensm...@gmail.com> wrote:
>
> > I guess I always thought there'd be some more substantial overflow
> mitigation.
>
> You have to free with the exact same size as allocation.
>
> nmemb and size did not change.
>
> The math has already been checked, and regular codeflows will store the
> multiple in a single variable after successful checking&allocation, for
> reuse.
>
> > Would it be too much hand-holding to put in the manpage that to avoid
> potential
> > freeezero() integer overflow,
> > it may be useful to run freezero() as freezero((size_t)nmemb *
> (size_t)size);
>
> Wow, Those casts make it very clear you don't understand C, if you do
> that kind of stuff elsewhere you are introducing problems.
>
> Sorry no you are wrong.
>

Reply via email to