From: Paul Ramsey Date: Thu, 14 Sep 2017 13:52:25 +0000 (+0000) Subject: #3847, coverity fixes around the loaders X-Git-Tag: 2.4.0rc2~59 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7a7867a6b731ee45a46cf41afdba4fc0a6f9e755;p=postgis #3847, coverity fixes around the loaders git-svn-id: http://svn.osgeo.org/postgis/trunk@15722 b70326c6-7e19-0410-871a-916f4a2858ee --- diff --git a/loader/dbfopen.c b/loader/dbfopen.c index e2054831b..e80d1d6e8 100644 --- a/loader/dbfopen.c +++ b/loader/dbfopen.c @@ -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 ); diff --git a/loader/pgsql2shp-core.c b/loader/pgsql2shp-core.c index 3d2d0e598..97762b33e 100644 --- a/loader/pgsql2shp-core.c +++ b/loader/pgsql2shp-core.c @@ -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; } diff --git a/loader/shp2pgsql-core.c b/loader/shp2pgsql-core.c index 63f8ecb16..da4b13610 100644 --- a/loader/shp2pgsql-core.c +++ b/loader/shp2pgsql-core.c @@ -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; } @@ -784,7 +787,7 @@ ShpLoaderCreate(SHPLOADERCONFIG *config) state->precisions = NULL; state->col_names = NULL; state->field_names = NULL; - state->num_fields = NULL; + state->num_fields = 0; state->pgfieldtypes = NULL; state->from_srid = config->shp_sr_id; @@ -1613,10 +1616,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; } @@ -1638,6 +1641,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); diff --git a/raster/loader/raster2pgsql.c b/raster/loader/raster2pgsql.c index 4db7a1ead..18eaba53b 100644 --- a/raster/loader/raster2pgsql.c +++ b/raster/loader/raster2pgsql.c @@ -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;