From acd0a87609933d8ea00c38bb7d0e40415b8bd3d1 Mon Sep 17 00:00:00 2001 From: Julien Michel <julien.michel@orfeo-toolbox.org> Date: Fri, 30 Jan 2015 17:12:12 +0100 Subject: [PATCH] COV: Fixing all coverity high impact issues in ossimPlugins --- .../ossim/ossimEnvisatAsarModel.cpp | 3 +- .../ossim/ossimRadarSat2Model.cpp | 25 +++++++-- .../ossim/ossimRadarSat2ProductDoc.cpp | 55 +++++++++---------- .../ossim/ossimRadarSatModel.cpp | 4 +- .../ossim/ossimSpot6DimapSupportData.cpp | 2 +- .../ossim/ossimTerraSarModel.cpp | 23 +++++++- .../ossim/ossimTerraSarProductDoc.cpp | 1 + .../ossim/otb/GMSTDateTime.cpp | 4 +- 8 files changed, 76 insertions(+), 41 deletions(-) diff --git a/Utilities/otbossimplugins/ossim/ossimEnvisatAsarModel.cpp b/Utilities/otbossimplugins/ossim/ossimEnvisatAsarModel.cpp index 0abfa4d9cb..cc900312b3 100644 --- a/Utilities/otbossimplugins/ossim/ossimEnvisatAsarModel.cpp +++ b/Utilities/otbossimplugins/ossim/ossimEnvisatAsarModel.cpp @@ -68,7 +68,7 @@ namespace ossimplugins { const double CLUM = 2.99792458e+8 ; - double GR, GR0, relativeGroundRange, slantRange, slantrangetime; + double GR, GR0, relativeGroundRange, slantRange; if (_n_srgr==0) return(-1) ; @@ -83,7 +83,6 @@ namespace ossimplugins + coefset[4]*pow(relativeGroundRange,3) + coefset[5]*pow(relativeGroundRange,4); - slantrangetime = 2.0*slantRange / (CLUM); return slantRange ; } diff --git a/Utilities/otbossimplugins/ossim/ossimRadarSat2Model.cpp b/Utilities/otbossimplugins/ossim/ossimRadarSat2Model.cpp index c7e78de798..7364f1bb03 100644 --- a/Utilities/otbossimplugins/ossim/ossimRadarSat2Model.cpp +++ b/Utilities/otbossimplugins/ossim/ossimRadarSat2Model.cpp @@ -460,7 +460,11 @@ bool ossimRadarSat2Model::InitPlatformPosition(const ossimKeywordlist &kwl, cons CivilDateTime eph_civil_date; - if (! ossim::iso8601TimeStringToCivilDate(utcString, eph_civil_date)) return false; + if (! ossim::iso8601TimeStringToCivilDate(utcString, eph_civil_date)) + { + delete ephemeris; + return false; + } JSDDateTime eph_jsd_date(eph_civil_date); @@ -514,7 +518,11 @@ bool ossimRadarSat2Model::InitRefPoint(const ossimKeywordlist &kwl, std::string zeroDopplerTimeFirstLine(zeroDopplerTimeFirstLine_str); CivilDateTime * date = new CivilDateTime() ; - if (! ossim::iso8601TimeStringToCivilDate(zeroDopplerTimeFirstLine, *date)) return false ; + if (! ossim::iso8601TimeStringToCivilDate(zeroDopplerTimeFirstLine, *date)) + { + delete date; + return false ; + } if (_sensor->get_lin_direction() == -1) { double time = (double) date->get_second() + date->get_decimal() ; // upper left corner @@ -522,18 +530,22 @@ bool ossimRadarSat2Model::InitRefPoint(const ossimKeywordlist &kwl, date->set_second((int) floor(time)) ; date->set_decimal(time - floor(time)) ; } - delete date;//FIXME to confirm if(_platformPosition != 0) { Ephemeris * ephemeris = _platformPosition->Interpolate((JSDDateTime)*date); - if (ephemeris == 0) return false ; + if (ephemeris == 0) + { + delete date; + return false ; + } _refPoint->set_ephemeris(ephemeris); delete ephemeris; } else { + delete date; return false; } @@ -593,6 +605,8 @@ bool ossimRadarSat2Model::InitRefPoint(const ossimKeywordlist &kwl, // Default optimization optimizeModel(groundGcpCoordinates, imageGcpCoordinates) ; + delete date; + return true; } @@ -648,7 +662,7 @@ int ossimRadarSat2Model::FindSRGRSetNumber(JSDDateTime date) const { if (_n_srgr==0) return(-1) ; - double delays[20]; + double * delays = new double[_n_srgr]; for (int i=0;i<_n_srgr;i++) { delays[i] = fabs(date.get_second()+date.get_decimal()-_srgr_update[i]) ; @@ -663,6 +677,7 @@ int ossimRadarSat2Model::FindSRGRSetNumber(JSDDateTime date) const min_delay = delays[i] ; } } + delete [] delays; return setNumber ; } diff --git a/Utilities/otbossimplugins/ossim/ossimRadarSat2ProductDoc.cpp b/Utilities/otbossimplugins/ossim/ossimRadarSat2ProductDoc.cpp index 65a03bea50..9dd620f54b 100644 --- a/Utilities/otbossimplugins/ossim/ossimRadarSat2ProductDoc.cpp +++ b/Utilities/otbossimplugins/ossim/ossimRadarSat2ProductDoc.cpp @@ -233,15 +233,13 @@ bool ossimRadarSat2ProductDoc::initPlatformPosition( } pos->setData(ephemeris, nbrData); } - else - { - for (int idx = 0; idx < nbrData; ++idx) - { - delete ephemeris[idx]; - } - delete [] ephemeris; - ephemeris = 0; - } + + for (int idx = 0; idx < nbrData; ++idx) + { + delete ephemeris[idx]; + } + delete [] ephemeris; + ephemeris = 0; } // matches: if ( xnodes.size() ) else @@ -830,27 +828,28 @@ RPCModel ossimRadarSat2ProductDoc::getRpcData(const ossimXmlDocument* xdoc) cons } // end character search term - - model.biasError = biasError; - model.randomError = randomError; - model.lineFitQuality = lineFitQuality; - model.pixelFitQuality = pixelFitQuality; - model.lineOffset = lineOffset; - model.pixelOffset = pixelOffset; - model.latitudeOffset = latitudeOffset; - model.longitudeOffset = longitudeOffset; - model.heightOffset = heightOffset; - model.lineScale = lineScale; - model.pixelScale = pixelScale; - model.latitudeScale = latitudeScale; - model.longitudeScale = longitudeScale; - model.heightScale = heightScale; - model.lineNumeratorCoefficients = lineNumeratorCoefficients; - model.lineDenominatorCoefficients = lineDenominatorCoefficients; - model.pixelNumeratorCoefficients = pixelNumeratorCoefficients; - model.pixelDenominatorCoefficients = pixelDenominatorCoefficients; } + // Fill RPCModel members + model.biasError = biasError; + model.randomError = randomError; + model.lineFitQuality = lineFitQuality; + model.pixelFitQuality = pixelFitQuality; + model.lineOffset = lineOffset; + model.pixelOffset = pixelOffset; + model.latitudeOffset = latitudeOffset; + model.longitudeOffset = longitudeOffset; + model.heightOffset = heightOffset; + model.lineScale = lineScale; + model.pixelScale = pixelScale; + model.latitudeScale = latitudeScale; + model.longitudeScale = longitudeScale; + model.heightScale = heightScale; + model.lineNumeratorCoefficients = lineNumeratorCoefficients; + model.lineDenominatorCoefficients = lineDenominatorCoefficients; + model.pixelNumeratorCoefficients = pixelNumeratorCoefficients; + model.pixelDenominatorCoefficients = pixelDenominatorCoefficients; + return model; } diff --git a/Utilities/otbossimplugins/ossim/ossimRadarSatModel.cpp b/Utilities/otbossimplugins/ossim/ossimRadarSatModel.cpp index dd9e2deaa4..c78dd89ace 100644 --- a/Utilities/otbossimplugins/ossim/ossimRadarSatModel.cpp +++ b/Utilities/otbossimplugins/ossim/ossimRadarSatModel.cpp @@ -1211,7 +1211,7 @@ int ossimRadarSatModel::FindSRGRSetNumber(JSDDateTime date) const { if (_n_srgr==0) return(-1) ; - double delays[20]; + double * delays = new double[_n_srgr]; for (int i=0;i<_n_srgr;i++) { delays[i] = fabs(date.get_second()+date.get_decimal()-_srgr_update[i]) ; @@ -1226,6 +1226,8 @@ int ossimRadarSatModel::FindSRGRSetNumber(JSDDateTime date) const min_delay = delays[i] ; } } + + delete [] delays; return setNumber ; } } diff --git a/Utilities/otbossimplugins/ossim/ossimSpot6DimapSupportData.cpp b/Utilities/otbossimplugins/ossim/ossimSpot6DimapSupportData.cpp index d730421302..6fd95d9438 100644 --- a/Utilities/otbossimplugins/ossim/ossimSpot6DimapSupportData.cpp +++ b/Utilities/otbossimplugins/ossim/ossimSpot6DimapSupportData.cpp @@ -1342,7 +1342,7 @@ namespace ossimplugins } ossimString bandName = sub_nodes[0]->getText(); - ossim_uint32 bandIndex; + ossim_uint32 bandIndex = 0; if (bandName == "B0") bandIndex = 0; else diff --git a/Utilities/otbossimplugins/ossim/ossimTerraSarModel.cpp b/Utilities/otbossimplugins/ossim/ossimTerraSarModel.cpp index cc4f3bfba0..6e9650effe 100644 --- a/Utilities/otbossimplugins/ossim/ossimTerraSarModel.cpp +++ b/Utilities/otbossimplugins/ossim/ossimTerraSarModel.cpp @@ -1129,7 +1129,11 @@ bool ossimplugins::ossimTerraSarModel::InitPlatformPosition( */ std::string utcString(date_str); CivilDateTime eph_civil_date; - if (! ossim::iso8601TimeStringToCivilDate(utcString, eph_civil_date)) return false; + if (! ossim::iso8601TimeStringToCivilDate(utcString, eph_civil_date)) + { + delete [] ephemeris; + return false; + } JSDDateTime eph_jsd_date(eph_civil_date); @@ -1195,6 +1199,7 @@ bool ossimplugins::ossimTerraSarModel::InitRefPoint(const ossimKeywordlist &kwl, } else { + delete date; return false; } @@ -1227,14 +1232,26 @@ bool ossimplugins::ossimTerraSarModel::InitRefPoint(const ossimKeywordlist &kwl, std::string azimuthStartTime(kwl.find("azimuthStartTime")); std::string azimuthStopTime(kwl.find("azimuthStopTime")); CivilDateTime * dateStart = new CivilDateTime() ; - if (! ossim::iso8601TimeStringToCivilDate(azimuthStartTime, *dateStart)) return false ; + if (! ossim::iso8601TimeStringToCivilDate(azimuthStartTime, *dateStart)) + { + delete dateStart; + return false ; + } CivilDateTime * dateStop = new CivilDateTime() ; - if (! ossim::iso8601TimeStringToCivilDate(azimuthStopTime, *dateStop)) return false ; + if (! ossim::iso8601TimeStringToCivilDate(azimuthStopTime, *dateStop)) + { + delete dateStart; + delete dateStop; + return false ; + } double acq_msec_first = (double) dateStart->get_second()+dateStart->get_decimal(); double acq_msec_last = (double) dateStop->get_second()+dateStop->get_decimal(); double actualPRF = theImageSize.y/(acq_msec_last-acq_msec_first) ; _sensor->set_nAzimuthLook(_sensor->get_prf()/actualPRF); + + delete dateStart; + delete dateStop; } else _sensor->set_nAzimuthLook(1.0); diff --git a/Utilities/otbossimplugins/ossim/ossimTerraSarProductDoc.cpp b/Utilities/otbossimplugins/ossim/ossimTerraSarProductDoc.cpp index 7f1ef5b1e7..6bf296aae2 100644 --- a/Utilities/otbossimplugins/ossim/ossimTerraSarProductDoc.cpp +++ b/Utilities/otbossimplugins/ossim/ossimTerraSarProductDoc.cpp @@ -243,6 +243,7 @@ bool ossimplugins::ossimTerraSarProductDoc::initPlatformPosition( << " DEBUG\nnbrData: " << nbrData << "\n"; } pos->setData(ephemeris, nbrData); + delete [] ephemeris; } else { diff --git a/Utilities/otbossimplugins/ossim/otb/GMSTDateTime.cpp b/Utilities/otbossimplugins/ossim/otb/GMSTDateTime.cpp index a67b1707e2..263f972395 100644 --- a/Utilities/otbossimplugins/ossim/otb/GMSTDateTime.cpp +++ b/Utilities/otbossimplugins/ossim/otb/GMSTDateTime.cpp @@ -17,7 +17,9 @@ namespace ossimplugins GMSTDateTime::GMSTDateTime(): - _tms(0) + _tms(0), + // TODO: Check this initialisation + _origine(GMSTDateTime::AN1900) { } -- GitLab