Changeset 13665

Show
Ignore:
Timestamp:
02/01/08 18:33:01 (3 months ago)
Author:
rouault
Message:

Fix logical tests in PNM Identify and potential buffer overflow on bad files (bug #2190)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/1.4/gdal/frmts/raw/pnmdataset.cpp

    r10646 r13665  
    122122        return NULL; 
    123123 
    124     if( poOpenInfo->pabyHeader[0] != 'P'  && 
    125         (poOpenInfo->pabyHeader[2] != ' '  ||    // XXX: Magick number 
    126          poOpenInfo->pabyHeader[2] != '\t' ||    // may be followed 
    127          poOpenInfo->pabyHeader[2] != '\n' ||    // any of the blank 
     124    if( poOpenInfo->pabyHeader[0] != 'P'  || 
     125        (poOpenInfo->pabyHeader[2] != ' '  &&    // XXX: Magick number 
     126         poOpenInfo->pabyHeader[2] != '\t' &&    // may be followed 
     127         poOpenInfo->pabyHeader[2] != '\n' &&    // any of the blank 
    128128         poOpenInfo->pabyHeader[2] != '\r') )    // characters 
    129129        return NULL; 
     
    138138    const char  *pszSrc = (const char *) poOpenInfo->pabyHeader; 
    139139    char        szToken[512]; 
    140     int         iIn, iOut, iToken = 0, nWidth =-1, nHeight=-1, nMaxValue=-1; 
     140    int         iIn, iToken = 0, nWidth =-1, nHeight=-1, nMaxValue=-1; 
     141    unsigned int iOut; 
    141142 
    142143    iIn = 2; 
     
    145146        iOut = 0; 
    146147        szToken[0] = '\0'; 
    147         while( iIn < poOpenInfo->nHeaderBytes ) 
     148        while( iOut < sizeof(szToken) && iIn < poOpenInfo->nHeaderBytes ) 
    148149        { 
    149150            if( pszSrc[iIn] == '#' )