[mapcache] 01/08: New upstream version 1.6.1

Bas Couwenberg sebastic at debian.org
Sat Sep 30 08:07:43 UTC 2017


This is an automated email from the git hooks/post-receive script.

sebastic pushed a commit to branch master
in repository mapcache.

commit b4361f5cf1f6c3cc4f62110a6b9d9ce7f81d7522
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Sat Sep 30 09:23:25 2017 +0200

    New upstream version 1.6.1
---
 CMakeLists.txt     |  2 +-
 include/mapcache.h |  8 ++++++++
 lib/cache_tiff.c   |  2 +-
 lib/service_wms.c  |  6 +++---
 lib/service_wmts.c |  4 +++-
 lib/source_gdal.c  |  2 +-
 lib/util.c         | 47 +++++++++++++++++++++++++++++++++++++++++++++++
 7 files changed, 64 insertions(+), 7 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3d4edc5..f47fea5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -13,7 +13,7 @@ endif ()
 
 set (MAPCACHE_VERSION_MAJOR 1)
 set (MAPCACHE_VERSION_MINOR 6)
-set (MAPCACHE_VERSION_REVISION 0)
+set (MAPCACHE_VERSION_REVISION 1)
 
 if(NOT DEFINED CMAKE_INSTALL_LIBDIR)
    set(CMAKE_INSTALL_LIBDIR lib)
diff --git a/include/mapcache.h b/include/mapcache.h
index 2622e72..f747eb3 100644
--- a/include/mapcache.h
+++ b/include/mapcache.h
@@ -1341,6 +1341,14 @@ char* mapcache_util_quadkey_encode(mapcache_context *ctx, int x, int y, int z);
  */
 char* mapcache_util_str_sanitize(apr_pool_t *pool, const char *str, const char* from, char to);
 
+typedef enum {
+  MAPCACHE_UTIL_XML_SECTION_TEXT,
+  MAPCACHE_UTIL_XML_SECTION_ATTRIBUTE,
+  MAPCACHE_UTIL_XML_SECTION_COMMENT
+} mapcache_util_xml_section_type;
+
+char* mapcache_util_str_xml_escape(apr_pool_t *pool, const char *str, mapcache_util_xml_section_type xml_section_type);
+
 char* mapcache_util_get_tile_dimkey(mapcache_context *ctx, mapcache_tile *tile, char* sanitized_chars, char *sanitize_to);
 
 char* mapcache_util_get_tile_key(mapcache_context *ctx, mapcache_tile *tile, char *stemplate,
diff --git a/lib/cache_tiff.c b/lib/cache_tiff.c
index 6a4f115..a576602 100644
--- a/lib/cache_tiff.c
+++ b/lib/cache_tiff.c
@@ -302,7 +302,7 @@ static TIFF* mapcache_cache_tiff_open(mapcache_context *ctx,
                          _tiffMapProc, _tiffUnmapProc );
 }
 
-static void mapcache_cache_tiff_gdal_error_handler(CPLErr eErr,
+static void CPL_STDCALL mapcache_cache_tiff_gdal_error_handler(CPLErr eErr,
                                                    int error_num,
                                                    const char* pszMsg)
 {
diff --git a/lib/service_wms.c b/lib/service_wms.c
index 0ac1845..97e0566 100644
--- a/lib/service_wms.c
+++ b/lib/service_wms.c
@@ -1033,9 +1033,7 @@ void _format_error_wms(mapcache_context *ctx, mapcache_service *service, char *m
 \"http://schemas.opengis.net/wms/1.1.1/exception_1_1_1.dtd\">\n\
 <ServiceExceptionReport version=\"1.1.1\">\n\
 <ServiceException>\n\
-<![CDATA[\n\
 %s\n\
-]]>\n\
 </ServiceException>\n\
 %s\
 </ServiceExceptionReport>";
@@ -1052,7 +1050,9 @@ void _format_error_wms(mapcache_context *ctx, mapcache_service *service, char *m
     }
   }
 
-  *err_body = apr_psprintf(ctx->pool,template,msg,exceptions);
+  *err_body = apr_psprintf(ctx->pool,template,
+                           mapcache_util_str_xml_escape(ctx->pool, msg, MAPCACHE_UTIL_XML_SECTION_TEXT),
+                           exceptions);
   apr_table_set(headers, "Content-Type", "application/vnd.ogc.se_xml");
 }
 
diff --git a/lib/service_wmts.c b/lib/service_wmts.c
index f12f1d4..3add6d2 100644
--- a/lib/service_wmts.c
+++ b/lib/service_wmts.c
@@ -1014,7 +1014,9 @@ void _error_report_wmts(mapcache_context *ctx, mapcache_service *service, char *
                              "<Exception exceptionCode=\"%s\" locator=\"%s\"/>",elts[i].key,elts[i].val),NULL);
   }
 
-  *err_body = apr_psprintf(ctx->pool,template,msg,exceptions);
+  *err_body = apr_psprintf(ctx->pool,template,
+                           mapcache_util_str_xml_escape(ctx->pool, msg, MAPCACHE_UTIL_XML_SECTION_COMMENT),
+                           exceptions);
   apr_table_set(headers, "Content-Type", "application/xml");
 
 
diff --git a/lib/source_gdal.c b/lib/source_gdal.c
index 440d10d..3cf7846 100644
--- a/lib/source_gdal.c
+++ b/lib/source_gdal.c
@@ -571,7 +571,7 @@ void _mapcache_source_gdal_render_metatile(mapcache_context *ctx, mapcache_sourc
 #endif
 
   if( eErr != CE_None ) {
-    ctx->set_error(ctx, 500,"GDAL I/O error occured");
+    ctx->set_error(ctx, 500,"GDAL I/O error occurred");
     GDALClose(hDstDS); /* close first this one, as it references hTmpDS or hSrcDS */
     if( hTmpDS )
       GDALClose(hTmpDS); /* references hSrcDS, so close before */
diff --git a/lib/util.c b/lib/util.c
index bd01d25..8559df3 100644
--- a/lib/util.c
+++ b/lib/util.c
@@ -185,6 +185,53 @@ char* mapcache_util_str_sanitize(apr_pool_t *pool, const char *str, const char*
   return pstr;
 }
 
+char* mapcache_util_str_xml_escape(apr_pool_t *pool, const char *str,
+                                   mapcache_util_xml_section_type xml_section_type)
+{
+  int outpos = 0;
+  char* outstr = apr_pcalloc(pool, 6 * strlen(str) + 1);
+  for( ; *str != '\0'; str ++ ) {
+    if( xml_section_type == MAPCACHE_UTIL_XML_SECTION_COMMENT ) {
+      if( *str == '-' ) {
+        memcpy(outstr + outpos, "-", 5);
+        outpos += 5;
+      }
+      else {
+        outstr[outpos] = *str;
+        outpos ++;
+      }
+    }
+    else {
+      if( *str == '&' ) {
+        memcpy(outstr + outpos, "&", 5);
+        outpos += 5;
+      }
+      else if( *str == '<' ) {
+        memcpy(outstr + outpos, "<", 4);
+        outpos += 4;
+      }
+      else if( *str == '>' ) {
+        memcpy(outstr + outpos, ">", 4);
+        outpos += 4;
+      }
+      else if( *str == '"' ) {
+        memcpy(outstr + outpos, """, 6);
+        outpos += 6;
+      }
+      else if( *str == '\'' ) {
+        /* See https://github.com/mapserver/mapserver/issues/1040 */
+        memcpy(outstr + outpos, "'", 5);
+        outpos += 5;
+      }
+      else {
+        outstr[outpos] = *str;
+        outpos ++;
+      }
+    }
+  }
+  return outstr;
+}
+
 #if APR_MAJOR_VERSION < 1 || (APR_MAJOR_VERSION < 2 && APR_MINOR_VERSION < 3)
 APR_DECLARE(apr_table_t *) apr_table_clone(apr_pool_t *p, const apr_table_t *t)
 {

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/mapcache.git



More information about the Pkg-grass-devel mailing list