Hi,

>>>>> The check in explode.c seems correct since it doesn't have this cast.
>> 
>> I didn't say about cast.
>
> But I did...

Yes, I know. No problem.

>> Your diff looks only the fix of inflate.c.
>> Does explode.c not replace with memmove()? That's my question.
> 
> You're right It actually does need it. The types involved are unsigned
> in both files (the cast made me think they weren't) so the overlap check
> is incorrect in both. Wonderful.
> 
> What worries me a bit is that the NOMEMCPY path uses this:
> 
>             do {
>               redirSlide[w++] = redirSlide[d++];
>             } while (--e);
> 
> which isn't handling overlaps the way memmove does if w > d but w - d < e.

Currently I recongnized that the patch will be 

- do not use NOMEMCPY
- replace memcpy() to memmove() within #ifndef NOMEMCPY --- #endif,
  both inflate.c and explode.c
- suitable cast (or remove?) required

I thought simply replace memcpy() to memmove(), and I didn't consider
the cast. unzip is highly complicated code so I have no idea how to fix it,
sorry.

Regards,

--

postscript (to deraadt@)

I like current memcpy(), calling abort() when src/dst area overlapped.
This helps writing my code correctly. Thanks so much.

-- 
SASANO Takayoshi (JG1UAA) <u...@mx5.nisiq.net>

Reply via email to