Skip to content

Commit

Permalink
Fix memory corruption on empty raster query (#4778)
Browse files Browse the repository at this point in the history
  • Loading branch information
tbonfort committed Oct 9, 2013
1 parent f82d6c8 commit e83a0cb
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 8 deletions.
21 changes: 14 additions & 7 deletions maprasterquery.c
Expand Up @@ -666,7 +666,7 @@ int msRasterQueryByRect(mapObj *map, layerObj *layer, rectObj queryRect)
int tileitemindex=-1, tilelayerindex=-1; int tileitemindex=-1, tilelayerindex=-1;
shapeObj tshp; shapeObj tshp;
char tilename[MS_PATH_LENGTH]; char tilename[MS_PATH_LENGTH];
int done; int done, destroy_on_failure;


char szPath[MS_MAXPATHLEN]; char szPath[MS_MAXPATHLEN];
rectObj searchrect; rectObj searchrect;
Expand All @@ -677,7 +677,12 @@ int msRasterQueryByRect(mapObj *map, layerObj *layer, rectObj queryRect)
/* -------------------------------------------------------------------- */ /* -------------------------------------------------------------------- */
/* Get the layer info. */ /* Get the layer info. */
/* -------------------------------------------------------------------- */ /* -------------------------------------------------------------------- */
msRasterLayerInfoInitialize( layer ); if(!layer->layerinfo) {
msRasterLayerInfoInitialize( layer );
destroy_on_failure = 1;
} else {
destroy_on_failure = 0;
}
rlinfo = (rasterLayerInfo *) layer->layerinfo; rlinfo = (rasterLayerInfo *) layer->layerinfo;


/* -------------------------------------------------------------------- */ /* -------------------------------------------------------------------- */
Expand Down Expand Up @@ -956,12 +961,14 @@ int msRasterQueryByRect(mapObj *map, layerObj *layer, rectObj queryRect)
/* On failure, or empty result set, cleanup the rlinfo since we */ /* On failure, or empty result set, cleanup the rlinfo since we */
/* likely won't ever have it accessed or cleaned up later. */ /* likely won't ever have it accessed or cleaned up later. */
/* -------------------------------------------------------------------- */ /* -------------------------------------------------------------------- */
if( status == MS_FAILURE || rlinfo->query_results == 0 ) if( status == MS_FAILURE || rlinfo->query_results == 0 ) {
msRasterLayerInfoFree( layer ); if(destroy_on_failure) {

msRasterLayerInfoFree( layer );
/* populate the items/numitems layer-level values */ }
if( layer->layerinfo != NULL ) } else {
/* populate the items/numitems layer-level values */
msRASTERLayerGetItems(layer); msRASTERLayerGetItems(layer);
}


return status; return status;
#endif /* def USE_GDAL */ #endif /* def USE_GDAL */
Expand Down
2 changes: 1 addition & 1 deletion msautotest
Submodule msautotest updated from 4fab67 to 81e41e

0 comments on commit e83a0cb

Please sign in to comment.