URL:
  <http://savannah.nongnu.org/bugs/?32702>

                 Summary: Realloc can reduce size of location less than
(sizeof(struct __freelist) - sizeof(size_t))
                 Project: AVR C Runtime Library
            Submitted by: vinni
            Submitted on: Пнд 07 Мар 2011 23:10:22
                Category: Library
                Severity: 3 - Normal
                Priority: 5 - Normal
              Item Group: libc code
                  Status: None
        Percent Complete: 0%
             Assigned to: None
             Open/Closed: Open
         Discussion Lock: Any
                 Release: 1.7.*
           Fixed Release: None

    _______________________________________________________

Details:


Necessary check into the beginning realloc as in malloc:

        /*
         * Our minimum chunk size is the size of a pointer (plus the
         * size of the "sz" field, but we don't need to account for
         * this), otherwise we could not possibly fit a freelist entry
         * into the chunk later.
         */
        if (len < sizeof(struct __freelist) - sizeof(size_t))
                len = sizeof(struct __freelist) - sizeof(size_t);
                
Test case:
{
        struct __freelist *fp;
        char *p, *p1;

        p = malloc( sizeof(struct __freelist) + 1 );    /// 5
        if (!p)
                return 1;       
                
        /* really size must not decrease */
        p1 = realloc( p,  sizeof(struct __freelist) - sizeof(size_t) - 1 );     
/// 1
        if (p != p1)
                return 2;
                
        fp = (struct __freelist *)(p - sizeof(size_t));
        if ( fp->sz != sizeof(struct __freelist) + 1 )
                return 3;
}       
                




    _______________________________________________________

Reply to this item at:

  <http://savannah.nongnu.org/bugs/?32702>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.nongnu.org/


_______________________________________________
AVR-libc-dev mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/avr-libc-dev

Reply via email to