From: Paul Ramsey <pramsey@cleverelephant.ca>
Date: Thu, 14 Sep 2017 13:56:57 +0000 (+0000)
Subject: #3847, coverity fixes in topology and address standardizer
X-Git-Tag: 2.4.0rc2~58
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e2cd01f45adabbb0d6011b4e88d990eafa57e428;p=postgis

#3847, coverity fixes in topology and address standardizer


git-svn-id: http://svn.osgeo.org/postgis/trunk@15723 b70326c6-7e19-0410-871a-916f4a2858ee
---

diff --git a/extensions/address_standardizer/gamma.c b/extensions/address_standardizer/gamma.c
index 66e26dd8e..dcb16f7d0 100644
--- a/extensions/address_standardizer/gamma.c
+++ b/extensions/address_standardizer/gamma.c
@@ -152,6 +152,18 @@ RULES *rules_init( ERR_PARAM *err_p ) {
     if ( !initialize_link( err_p ,
                            o_l ,
                            EPSILON ) ) {
+
+       /* Cleanup allocated resources */
+       FREE_AND_NULL(o_l);
+       FREE_AND_NULL(k_s);
+       FREE_AND_NULL(r_p);
+
+       PAGC_DESTROY_2D_ARRAY(rules -> Trie,NODE,MAXINSYM);
+       rules -> Trie = NULL;
+
+       rules_free(rules);
+       FREE_AND_NULL(rules);
+
        return NULL ;
     }
 
diff --git a/topology/postgis_topology.c b/topology/postgis_topology.c
index a1481c051..5ec7cfab3 100644
--- a/topology/postgis_topology.c
+++ b/topology/postgis_topology.c
@@ -170,21 +170,19 @@ cb_loadTopologyByName(const LWT_BE_DATA* be, const char *name)
   static SPIPlanPtr plan = NULL;
 
   // prepare
-  if ( ! plan ) {
-    sql = "SELECT id,srid,precision,null::geometry"
-                          " FROM topology.topology "
-                          "WHERE name = $1::varchar";
-    argtypes[0] = CSTRINGOID;
-    plan = SPI_prepare(sql, 1, argtypes);
-    if ( ! plan )
-    {
-      cberror(be, "unexpected return (%d) from query preparation: %s",
-              SPI_result, sql);
-      return NULL;
-    }
-    SPI_keepplan(plan);
-    // SPI_freeplan to free, eventually
+  sql = "SELECT id,srid,precision,null::geometry"
+                        " FROM topology.topology "
+                        "WHERE name = $1::varchar";
+  argtypes[0] = CSTRINGOID;
+  plan = SPI_prepare(sql, 1, argtypes);
+  if ( ! plan )
+  {
+    cberror(be, "unexpected return (%d) from query preparation: %s",
+            SPI_result, sql);
+    return NULL;
   }
+  SPI_keepplan(plan);
+  // SPI_freeplan to free, eventually
 
   // execute
   values[0] = CStringGetDatum(name);