Ignore:
Timestamp:
02/03/12 11:40:43 (16 months ago)
Author:
cristy
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • ImageMagick/branches/ImageMagick-6.7.5/magick/property.c

    r6668 r6676  
    444444} 
    445445 
     446static inline ssize_t MagickMin(const ssize_t x,const ssize_t y) 
     447{ 
     448  if (x < y) 
     449    return(x); 
     450  return(y); 
     451} 
     452 
    446453static inline int ReadPropertyByte(const unsigned char **p,size_t *length) 
    447454{ 
     
    578585    if (ReadPropertyByte(&info,&length) != (unsigned char) 'M') 
    579586      continue; 
    580     id=(ssize_t) ReadPropertyMSBShort(&info,&length); 
     587    id=(ssize_t) ((int) ReadPropertyMSBShort(&info,&length)); 
    581588    if (id < (ssize_t) start) 
    582589      continue; 
     
    609616          */ 
    610617          info+=count; 
    611           length-=count; 
     618          length-=MagickMin(count,(ssize_t) length); 
    612619          continue; 
    613620        } 
     
    619626        sub_number--; 
    620627        info+=count; 
    621         length-=count; 
     628        length-=MagickMin(count,(ssize_t) length); 
    622629        continue; 
    623630      } 
     
    634641        attribute[count]='\0'; 
    635642        info+=count; 
    636         length-=count; 
     643        length-=MagickMin(count,(ssize_t) length); 
    637644        if ((id <= 1999) || (id >= 2999)) 
    638645          (void) SetImageProperty((Image *) image,key,(const char *) 
     
    12541261      Determine how many entries there are in the current IFD. 
    12551262    */ 
    1256     number_entries=ReadPropertyShort(endian,directory); 
     1263    number_entries=(size_t) ((int) ReadPropertyShort(endian,directory)); 
    12571264    for ( ; entry < number_entries; entry++) 
    12581265    { 
     
    13251332            { 
    13261333              EXIFMultipleValues(4,"%.20g",(double) 
    1327                 ReadPropertyLong(endian,p1)); 
     1334                ((int) ReadPropertyLong(endian,p1))); 
    13281335              break; 
    13291336            } 
     
    14391446        } 
    14401447        if ((tag_value == TAG_EXIF_OFFSET) || 
    1441             (tag_value == TAG_INTEROP_OFFSET) || 
    1442             (tag_value == TAG_GPS_OFFSET)) 
     1448            (tag_value == TAG_INTEROP_OFFSET) || (tag_value == TAG_GPS_OFFSET)) 
    14431449          { 
    14441450            size_t 
     
    14631469                if ((directory+2+(12*number_entries)) > (exif+length)) 
    14641470                  break; 
    1465                 offset=(size_t) ReadPropertyLong(endian,directory+2+(12* 
    1466                   number_entries)); 
     1471                offset=(size_t) ((int) ReadPropertyLong(endian,directory+2+(12* 
     1472                  number_entries))); 
    14671473                if ((offset != 0) && (offset < length) && 
    14681474                    (level < (MaxDirectoryStack-2))) 
     
    16191625  while (length > 0) 
    16201626  { 
    1621     selector=(ssize_t) ReadPropertyMSBShort(&blob,&length); 
     1627    selector=(ssize_t) ((int) ReadPropertyMSBShort(&blob,&length)); 
    16221628    switch (selector) 
    16231629    { 
     
    16281634          { 
    16291635            blob+=24; 
    1630             length-=24; 
     1636            length-=MagickMin(24,(ssize_t) length); 
    16311637            break; 
    16321638          } 
     
    16341640          Expected subpath length record. 
    16351641        */ 
    1636         knot_count=(ssize_t) ReadPropertyMSBShort(&blob,&length); 
     1642        knot_count=(ssize_t) ((int) ReadPropertyMSBShort(&blob,&length)); 
    16371643        blob+=22; 
    1638         length-=22; 
     1644        length-=MagickMin(22,(ssize_t) length); 
    16391645        break; 
    16401646      } 
     
    16501656            */ 
    16511657            blob+=24; 
    1652             length-=24; 
     1658            length-=MagickMin(24,(ssize_t) length); 
    16531659            break; 
    16541660          } 
     
    16621668            yy; 
    16631669 
    1664           yy=ReadPropertyMSBLong(&blob,&length); 
    1665           xx=ReadPropertyMSBLong(&blob,&length); 
     1670          yy=(size_t) ((int) ReadPropertyMSBLong(&blob,&length)); 
     1671          xx=(size_t) ((int) ReadPropertyMSBLong(&blob,&length)); 
    16661672          x=(ssize_t) xx; 
    16671673          if (xx > 2147483647) 
     
    17511757      { 
    17521758        blob+=24; 
    1753         length-=24; 
     1759        length-=MagickMin(24,(ssize_t) length); 
    17541760        break; 
    17551761      } 
     
    18161822  while (length != 0) 
    18171823  { 
    1818     selector=(ssize_t) ReadPropertyMSBShort(&blob,&length); 
     1824    selector=(ssize_t) ((int) ReadPropertyMSBShort(&blob,&length)); 
    18191825    switch (selector) 
    18201826    { 
     
    18251831          { 
    18261832            blob+=24; 
    1827             length-=24; 
     1833            length-=MagickMin(24,(ssize_t) length); 
    18281834            break; 
    18291835          } 
     
    18311837          Expected subpath length record. 
    18321838        */ 
    1833         knot_count=(ssize_t) ReadPropertyMSBShort(&blob,&length); 
     1839        knot_count=(ssize_t) ((int) ReadPropertyMSBShort(&blob,&length)); 
    18341840        blob+=22; 
    1835         length-=22; 
     1841        length-=MagickMin(22,(ssize_t) length); 
    18361842        break; 
    18371843      } 
     
    18471853            */ 
    18481854            blob+=24; 
    1849             length-=24; 
     1855            length-=MagickMin(24,(ssize_t) length); 
    18501856            break; 
    18511857          } 
     
    19221928      { 
    19231929        blob+=24; 
    1924         length-=24; 
     1930        length-=MagickMin(24,(ssize_t) length); 
    19251931        break; 
    19261932      } 
Note: See TracChangeset for help on using the changeset viewer.