diff --git a/Code/IO/otbImageFileReader.txx b/Code/IO/otbImageFileReader.txx
index f8b80ce373f44a99085f4feacef0222f17f8d8a3..7fc06d715d4c3a34e6e3ca8d56b4270ea1735baf 100644
--- a/Code/IO/otbImageFileReader.txx
+++ b/Code/IO/otbImageFileReader.txx
@@ -380,6 +380,7 @@ ImageFileReader<TOutputImage>
          if (projection)
            {
              hasMetaData = projection->saveState(geom_kwl);
+             delete projection;
            }
        }
       // Free memory
diff --git a/Utilities/otbossimplugins/ossim/EnvisatAsar/EnvisatAsarRecord.h b/Utilities/otbossimplugins/ossim/EnvisatAsar/EnvisatAsarRecord.h
index e653bb85894f43b35557e94c403993dc54c43f9e..5edc646999fcffdf5868bf4cd790b2a967c41c11 100644
--- a/Utilities/otbossimplugins/ossim/EnvisatAsar/EnvisatAsarRecord.h
+++ b/Utilities/otbossimplugins/ossim/EnvisatAsar/EnvisatAsarRecord.h
@@ -97,6 +97,9 @@ protected:
         res[nb_octets-1-i] = buffer[i];
       }
       memcpy(&value,res,nb_octets);
+
+      free(buffer);
+      free(res);
     }
   }
 
diff --git a/Utilities/otbossimplugins/ossim/RadarSat/Data/Data.cpp b/Utilities/otbossimplugins/ossim/RadarSat/Data/Data.cpp
index d942d483074bccacb1d196f5a14f23ede59eb586..86aabd5fbcdfb09c734044080a20cd1286e46cd1 100644
--- a/Utilities/otbossimplugins/ossim/RadarSat/Data/Data.cpp
+++ b/Utilities/otbossimplugins/ossim/RadarSat/Data/Data.cpp
@@ -68,7 +68,7 @@ std::istream& operator>>(std::istream& is, Data& data)
 		else
 		{
 			if (header.get_rec_seq() == 1) { // ImageOptionsFileDescriptor
-				RadarSatRecord* record = factory.Instanciate(header.get_rec_seq());
+      				RadarSatRecord* record = factory.Instanciate(header.get_rec_seq());
 				if (record != NULL)
 				{
 					record->Read(is);
@@ -80,12 +80,13 @@ std::istream& operator>>(std::istream& is, Data& data)
 				{
 					char* buff = new char[header.get_length()-12];
 					is.read(buff, header.get_length()-12);
-					delete buff;
+					delete[] buff;
 				}
 			}
 			else if ((header.get_rec_seq() == 2)) { // First line ProcessedDataRecord
-				RadarSatRecord* record = factory.Instanciate(2);
+
 				lineLength = header.get_length() ;
+      				RadarSatRecord* record = factory.Instanciate(2);
 				if (record != NULL)
 				{
 					record->Read(is);
@@ -93,28 +94,31 @@ std::istream& operator>>(std::istream& is, Data& data)
 
 					char* buff = new char[header.get_length()-192];
 					is.read(buff, header.get_length()-192);	// Reads the rest of the line
+					delete[] buff;
 				}
 				else
 				{
 					char* buff = new char[header.get_length()-12];
 					is.read(buff, header.get_length()-12);
-					delete buff;
+					delete[] buff;
 				}
 			}
 			else if ((header.get_rec_seq() == (1+nbLin))) { // Last line ProcessedDataRecord
-				RadarSatRecord* record = factory.Instanciate(2);
+      				RadarSatRecord* record = factory.Instanciate(2);
 				if (record != NULL)
 				{
 					record->Read(is);
 					data._records[Data::LastProcessedDataRecordID] = record;
+
 					char* buff = new char[header.get_length()-192];
 					is.read(buff, header.get_length()-192);	// Reads the rest of the line
+					delete[] buff;
 				}
 				else
 				{
 					char* buff = new char[header.get_length()-12];
 					is.read(buff, header.get_length()-12);
-					delete buff;
+					delete[] buff;
 				}
 			}
 			else
diff --git a/Utilities/otbossimplugins/ossim/RadarSat/Data/DataFactory.cpp b/Utilities/otbossimplugins/ossim/RadarSat/Data/DataFactory.cpp
index 94de79938a725df886be7e2742b6226e42b51c71..9889547dfdb5512ab319fe60bb7e53632901bfec 100644
--- a/Utilities/otbossimplugins/ossim/RadarSat/Data/DataFactory.cpp
+++ b/Utilities/otbossimplugins/ossim/RadarSat/Data/DataFactory.cpp
@@ -25,6 +25,17 @@ DataFactory::DataFactory()
 
 DataFactory::~DataFactory()
 {
+  std::map<int, RadarSatRecord*>::iterator i = _availableRecords.begin();
 
+  while (i != _availableRecords.end())
+  {
+     if ( (*i).second )
+     {
+        delete (*i).second;
+        (*i).second = 0;
+     }
+     ++i;
+  }
+  _availableRecords.clear();
 }
 }
diff --git a/Utilities/otbossimplugins/ossim/RadarSat/Data/ProcessedDataRecord.h b/Utilities/otbossimplugins/ossim/RadarSat/Data/ProcessedDataRecord.h
index c1fbb8492cb82687ba504cd419b9cd3c33666102..0ac120eeff854c447199e4241a210eb6fc48480e 100644
--- a/Utilities/otbossimplugins/ossim/RadarSat/Data/ProcessedDataRecord.h
+++ b/Utilities/otbossimplugins/ossim/RadarSat/Data/ProcessedDataRecord.h
@@ -412,6 +412,9 @@ private:
         res[nb_octets-1-i] = buffer[i];
       }
       memcpy(&value,res,nb_octets);
+
+      free(buffer);
+      free(res);
     }
   }
 };
diff --git a/Utilities/otbossimplugins/ossim/RadarSat/Leader/Leader.cpp b/Utilities/otbossimplugins/ossim/RadarSat/Leader/Leader.cpp
index 309c0c15bcadf04bd82488b0a40661b92ce5aace..9313d5e867d190d7983a93f9f159c2591408a6f4 100644
--- a/Utilities/otbossimplugins/ossim/RadarSat/Leader/Leader.cpp
+++ b/Utilities/otbossimplugins/ossim/RadarSat/Leader/Leader.cpp
@@ -86,7 +86,7 @@ std::istream& operator>>(std::istream& is, Leader& data)
 			{
 				char* buff = new char[header.get_length()-12];
 				is.read(buff, header.get_length()-12);
-				delete buff;
+				delete[] buff;
 			}
 		}
 	}
diff --git a/Utilities/otbossimplugins/ossim/RadarSat/Leader/LeaderFactory.cpp b/Utilities/otbossimplugins/ossim/RadarSat/Leader/LeaderFactory.cpp
index c2cbf1888fb16efba99c81a5e6ee79f6dc6d3600..3b5bd1cded3c2b8dd9f4071d25f53d354b7deba9 100644
--- a/Utilities/otbossimplugins/ossim/RadarSat/Leader/LeaderFactory.cpp
+++ b/Utilities/otbossimplugins/ossim/RadarSat/Leader/LeaderFactory.cpp
@@ -41,5 +41,18 @@ LeaderFactory::LeaderFactory()
 LeaderFactory::~LeaderFactory()
 {
 
+  std::map<int, RadarSatRecord*>::iterator i = _availableRecords.begin();
+
+  while (i != _availableRecords.end())
+  {
+     if ( (*i).second )
+     {
+        delete (*i).second;
+        (*i).second = 0;
+     }
+     ++i;
+  }
+  _availableRecords.clear();
+
 }
 }
diff --git a/Utilities/otbossimplugins/ossim/ossimRadarSat2Model.cpp b/Utilities/otbossimplugins/ossim/ossimRadarSat2Model.cpp
index 19b24dd7d03757cc6271b72f9a45015f141ae8e4..9287177efa8b3f0972cf70c2d0906bcc08cde2b1 100644
--- a/Utilities/otbossimplugins/ossim/ossimRadarSat2Model.cpp
+++ b/Utilities/otbossimplugins/ossim/ossimRadarSat2Model.cpp
@@ -502,7 +502,8 @@ 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);
diff --git a/Utilities/otbossimplugins/ossim/ossimRadarSatModel.cpp b/Utilities/otbossimplugins/ossim/ossimRadarSatModel.cpp
index cd57925598ddaafb68153e1aa9b690dc2b240cde..fb09615bceb959d2d55ed3b6a2a0545e3f19ea9e 100644
--- a/Utilities/otbossimplugins/ossim/ossimRadarSatModel.cpp
+++ b/Utilities/otbossimplugins/ossim/ossimRadarSatModel.cpp
@@ -53,6 +53,16 @@ ossimRadarSatModel::ossimRadarSatModel():
 
 ossimRadarSatModel::~ossimRadarSatModel()
 {
+  if (_data != 0)
+  {
+    delete _data;
+  }
+
+  if (_leader != 0)
+  {
+    delete _leader;
+  }
+  
 }
 
 ossimObject* ossimRadarSatModel::dup() const
@@ -623,9 +633,12 @@ bool ossimRadarSatModel::InitPlatformPosition(const ossimKeywordlist &kwl, const
     ephemeris[i] = eph;
 
     delete tmpEphemeris;
+    delete greenwich_mha;
 
   }
 
+  delete greenwich_mha_ref2000;
+
   /*
    * Antenna position interpolator creation
    */