--- a/include/pngtile.h Mon Jan 25 04:29:32 2010 +0200
+++ b/include/pngtile.h Mon Jan 25 04:33:38 2010 +0200
@@ -236,13 +236,14 @@
PT_ERR_CACHE_VERSION,
PT_ERR_CACHE_MUNMAP,
PT_ERR_CACHE_CLOSE,
-
+
+ PT_ERR_TILE_DIM,
PT_ERR_TILE_CLIP,
+ PT_ERR_TILE_ZOOM,
PT_ERR_PTHREAD_CREATE,
PT_ERR_CTX_SHUTDOWN,
- PT_ERR_ZOOM,
PT_ERR_MAX,
};
--- a/src/lib/error.c Mon Jan 25 04:29:32 2010 +0200
+++ b/src/lib/error.c Mon Jan 25 04:33:38 2010 +0200
@@ -34,8 +34,9 @@
[PT_ERR_PTHREAD_CREATE] = "pthread_create",
[PT_ERR_CTX_SHUTDOWN] = "pt_ctx is shutting down",
+ [PT_ERR_TILE_DIM] = "Invalid tile dimensions",
[PT_ERR_TILE_CLIP] = "Tile outside of image",
- [PT_ERR_ZOOM] = "Invalid zoom level",
+ [PT_ERR_TILE_ZOOM] = "Invalid zoom level",
};
const char *pt_strerror (int err)
--- a/src/lib/png.c Mon Jan 25 04:29:32 2010 +0200
+++ b/src/lib/png.c Mon Jan 25 04:33:38 2010 +0200
@@ -444,7 +444,7 @@
// only supports zooming out...
if (ti->zoom >= 0)
- RETURN_ERROR(PT_ERR_ZOOM);
+ RETURN_ERROR(PT_ERR_TILE_ZOOM);
if ((row_buf = malloc(row_bytes)) == NULL)
RETURN_ERROR(PT_ERR_MEM);
--- a/src/lib/tile.c Mon Jan 25 04:29:32 2010 +0200
+++ b/src/lib/tile.c Mon Jan 25 04:33:38 2010 +0200
@@ -78,6 +78,10 @@
int pt_tile_render (struct pt_tile *tile)
{
+ // validate dimensions
+ if (!tile->info.width || !tile->info.height)
+ RETURN_ERROR(PT_ERR_TILE_DIM);
+
return pt_cache_tile(tile->cache, tile);
}