Hi Ken,

On Dec 17 15:23, Ken Brown via Cygwin wrote:
> Hi Corinna,
> 
> On 12/17/2024 11:38 AM, Corinna Vinschen via Cygwin wrote:
> > Ideally a separate patch.  If you see a chance to send it to cygwin-patches
> > this week, we can even merge it into 3.5.5, which I'm planning to release
> > end of this week (after that --> vacation :)))
> That should be no problem.  By the way, I think I found a second bug.
> Shouldn't mmap:649 be
> 
> (*)  if (u_addr > (caddr_t) addr || u_len < len
> 
> instead of
> 
> (**)  if (u_addr > (caddr_t) addr || u_addr + len < (caddr_t) addr + len
> 
> ?
> 
> If the first condition in (**) fails, then u_addr == addr, so the second
> condition is automatically false.  But what we want to be testing at this
> point is whether the matched region is big enough, as in (*).  Or am I
> confused?

u_addr could be < addr.  We have two areas, the free area in u_addr and
u_len, and the requested area in addr and len.

So we have to check that addr is >= u_addr and addr + len is <= u_len:

  |----------------------------------------------------|
 u_addr                                           u_addr + u_len

           |--------------------|
          addr             addr + len

Make sense?


Corinna

-- 
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple

Reply via email to