]> granicus.if.org Git - postgis/commitdiff
#3847, coverity fixes for 2.3
authorPaul Ramsey <pramsey@cleverelephant.ca>
Thu, 14 Sep 2017 14:01:43 +0000 (14:01 +0000)
committerPaul Ramsey <pramsey@cleverelephant.ca>
Thu, 14 Sep 2017 14:01:43 +0000 (14:01 +0000)
git-svn-id: http://svn.osgeo.org/postgis/branches/2.3@15724 b70326c6-7e19-0410-871a-916f4a2858ee

extensions/address_standardizer/gamma.c
loader/dbfopen.c
loader/pgsql2shp-core.c
loader/shp2pgsql-core.c
raster/loader/raster2pgsql.c

index 66e26dd8ee2f3223d394edd87528ae9f151bd4b9..dcb16f7d0741f0cb36fbe5242bf38c5212bc5305 100644 (file)
@@ -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 ;
     }
 
index f8fc2658647cc6d0b78d58ebb898391f220591bd..9dc04624f218a2aa3a970603e6442e588265774b 100644 (file)
@@ -686,14 +686,22 @@ DBFCreateLL( const char * pszFilename, const char * pszCodePage, SAHooks *psHook
 /* -------------------------------------------------------------------- */
     fp = psHooks->FOpen( pszFullname, "wb" );
     if( fp == NULL )
+       {
+               free(pszBasename);
+               free(pszFullname);
         return( NULL );
+       }
 
     psHooks->FWrite( &chZero, 1, 1, fp );
     psHooks->FClose( fp );
 
     fp = psHooks->FOpen( pszFullname, "rb+" );
     if( fp == NULL )
+       {
+               free(pszBasename);
+               free(pszFullname);
         return( NULL );
+       }
 
 
     sprintf( pszFullname, "%s.cpg", pszBasename );
index 3d2d0e5987fe8c1999d1a9af456bbdebf5bcb25f..97762b33e8c73d6eb0bd1b988a2efa18fd9fca27 100644 (file)
@@ -831,8 +831,11 @@ projFileCreate(SHPDUMPERSTATE *state)
                                fp = fopen( pszFullname, "wb" );
                                if ( fp == NULL )
                                {
+                                       free(pszFullname);
+                                       free(query);
                                        return 0;
                                }
+                               else
                                {
                                    result = fputs (srtext,fp);
                     LWDEBUGF(3, "\n result %d proj SRText is %s .\n", result, srtext);
@@ -1738,7 +1741,10 @@ ShpDumperOpenTable(SHPDUMPERSTATE *state)
                        */
                        dbffieldsize = getMaxFieldSize(state->conn, state->schema, state->table, pgfieldname);
                        if (dbffieldsize == -1)
+                       {
+                               free(dbffieldname);
                                return 0;
+                       }
 
                        if (!dbffieldsize)
                                dbffieldsize = 32;
@@ -2087,6 +2093,7 @@ int ShpLoaderGenerateShapeRow(SHPDUMPERSTATE *state)
                        {
                                snprintf(state->message, SHPDUMPERMSGLEN, _("Error parsing HEXEWKB for record %d"), state->currow);
                                PQclear(state->fetchres);
+                               free(hexewkb);
                                return SHPDUMPERERR;
                        }
 
index dcc5e0c4806cc8c0476c0de281b6e68f3e7daba2..23a39e7c95f508f0e7a7b6c68463f42badd0636f 100644 (file)
@@ -703,6 +703,9 @@ GeneratePolygonGeometry(SHPLOADERSTATE *state, SHPObject *obj, char **geometry)
 
        if ( !mem )
        {
+               /* Free the linked list of rings */
+               ReleasePolygons(Outer, polygon_total);
+
                snprintf(state->message, SHPLOADERMSGLEN, "unable to write geometry");
                return SHPLOADERERR;
        }
@@ -1614,10 +1617,10 @@ ShpLoaderGenerateSQLRowStatement(SHPLOADERSTATE *state, int item, char **strreco
                        default:
                                snprintf(state->message, SHPLOADERMSGLEN, _("Error: field %d has invalid or unknown field type (%d)"), i, state->types[i]);
 
+                               /* clean up and return err */
                                SHPDestroyObject(obj);
                                stringbuffer_destroy(sbwarn);
                                stringbuffer_destroy(sb);
-
                                return SHPLOADERERR;
                        }
 
@@ -1639,6 +1642,10 @@ ShpLoaderGenerateSQLRowStatement(SHPLOADERSTATE *state, int item, char **strreco
                                        if ( rv == UTF8_BAD_RESULT )
                                                free(utf8str);
 
+                                       /* clean up and return err */
+                                       SHPDestroyObject(obj);
+                                       stringbuffer_destroy(sbwarn);
+                                       stringbuffer_destroy(sb);
                                        return SHPLOADERERR;
                                }
                                strncpy(val, utf8str, MAXVALUELEN);
index 4db7a1ead85268e48016eb1c8cc5504c57b968cd..18eaba53b97fe0a0c0b300aa0d19a047a8682c6f 100644 (file)
@@ -511,7 +511,7 @@ static void
 init_rastinfo(RASTERINFO *info) {
        info->srid = SRID_UNKNOWN;
        info->srs = NULL;
-       memset(info->dim, 0, sizeof(double) * 2);
+       memset(info->dim, 0, sizeof(uint32_t) * 2);
        info->nband_count = 0;
        info->nband = NULL;
        info->gdalbandtype = NULL;