openbsd-ports/x11/gaia/patches/patch-lib_wwfetch_wwfetch_image_c
2008-11-08 17:13:08 +00:00

32 lines
1.4 KiB
Plaintext

$OpenBSD: patch-lib_wwfetch_wwfetch_image_c,v 1.1 2008/11/08 17:13:08 ajacoutot Exp $
--- lib/wwfetch/wwfetch_image.c.orig Wed Nov 29 04:21:14 2006
+++ lib/wwfetch/wwfetch_image.c Sat Nov 8 18:01:51 2008
@@ -27,6 +27,9 @@
* @param level level of image [0..]
*/
wwfetch_error wwfetch_fetch_image(wwfetch *handle, int x, int y, int level) {
+ if (level > 14)
+ return WWFETCH_NOT_FOUND;
+
int res = 1 << (level);
double x1 = (double)(x)/(double)(res) * 360.0 - 180.0;
@@ -36,8 +39,16 @@ wwfetch_error wwfetch_fetch_image(wwfetch *handle, int
/* form full url */
char urlbuf[1024];
- if (snprintf(urlbuf, sizeof(urlbuf), "http://wms.jpl.nasa.gov/wms.cgi?request=GetMap&layers=global_mosaic_base&srs=EPSG:4326&width=256&height=256&bbox=%f,%f,%f,%f&format=image/jpeg&version=1.1.0&styles=", x1, y1, x2, y2) >= sizeof(urlbuf))
+ if (snprintf(urlbuf, sizeof(urlbuf), "http://wms.jpl.nasa.gov/wms.cgi?request=GetMap&layers=global_mosaic&srs=EPSG:4326&width=512&height=512&bbox=%f,%f,%f,%f&format=image/jpeg&version=1.1.0&styles=", x1, y1, x2, y2) >= sizeof(urlbuf))
return WWFETCH_SMALL_BUFFER;
+
+ wwfetch_error result = wwfetch_fetch(handle, urlbuf);
+ if (result == WWFETCH_OK) {
+ if (handle->currentsize < 4 || handle->currentdata[0] != 0xff ||
+ handle->currentdata[1] != 0xd8 || handle->currentdata[2] != 0xff ||
+ handle->currentdata[3] != 0xe0)
+ return WWFETCH_FETCH_FAILED;
+ }
return wwfetch_fetch(handle, urlbuf);
}