diff --git a/Code/UtilitiesAdapters/OGRAdapters/otbOGRDataSourceWrapper.cxx b/Code/UtilitiesAdapters/OGRAdapters/otbOGRDataSourceWrapper.cxx
index de5f6b99cc5a678ab67bb5c21a334bff129388e9..0e2cc58e1edbe682c9c44dacf8bc25f5fcbb58f7 100644
--- a/Code/UtilitiesAdapters/OGRAdapters/otbOGRDataSourceWrapper.cxx
+++ b/Code/UtilitiesAdapters/OGRAdapters/otbOGRDataSourceWrapper.cxx
@@ -224,6 +224,11 @@ void DeleteDataSource(std::string const& datasourceName)
 otb::ogr::DataSource::Pointer
 otb::ogr::DataSource::New(std::string const& datasourceName, Modes::type mode)
 {
+  if (mode < Modes::Read || mode >= Modes::MAX__)
+    {
+    itkGenericExceptionMacro(<< "Wrong mode when opening " << datasourceName);
+    }
+
   Drivers::Init();
 
   if (mode == Modes::Overwrite)