[Gdal-dev] Safety check needed for png read

Ben Discoe ben at vterrain.org
Tue Aug 24 23:28:11 EDT 2004


While in the png code (chasing GDAL crashes) i found that it calls libpng in
a very unsafe manner, not checking for failure.  We really need something
like this in pngdatset.cpp:

 poDS->hPNG = png_create_read_struct(...);
 if (poDS->hPNG == NULL)
 {
   int version = png_access_version_number();
   CPLError( CE_Failure, CPLE_NotSupported, 
     "The PNG driver failed to access libpng with version '%s',"
     " library is actually version '%d'.\n",
     PNG_LIBPNG_VER_STRING, version);
   delete poDS;
   return NULL;
 }

This will informatively catch the situation where the libpng libraries and
headers are out of sync, which is quite easy to get when wrangling with
library versioning issues, as i have been for the past 5 hours.

-Ben




More information about the Gdal-dev mailing list