Index: gcore/gdalopeninfo.cpp
===================================================================
--- gcore/gdalopeninfo.cpp	(révision 13619)
+++ gcore/gdalopeninfo.cpp	(copie de travail)
@@ -122,8 +122,15 @@
     }
     else if( bStatOK && !bIsDirectory )
     {
-        CPLString osDir = CPLGetDirname( pszFilename );
-        papszSiblingFiles = VSIReadDir( osDir );
+        if (CSLTestBoolean(CPLGetConfigOption("GDAL_LIST_SIBLING_FILES", "YES")))
+        {
+            CPLString osDir = CPLGetDirname( pszFilename );
+            papszSiblingFiles = VSIReadDir( osDir );
+        }
+        else
+        {
+            papszSiblingFiles = NULL;
+        }
     }
     else
         papszSiblingFiles = NULL;
Index: frmts/raw/genbindataset.cpp
===================================================================
--- frmts/raw/genbindataset.cpp	(révision 13619)
+++ frmts/raw/genbindataset.cpp	(copie de travail)
@@ -440,13 +440,21 @@
     CPLString osPath = CPLGetPath( poOpenInfo->pszFilename );
     CPLString osName = CPLGetBasename( poOpenInfo->pszFilename );
 
-    int iFile = CSLFindString(poOpenInfo->papszSiblingFiles, 
-                              CPLFormFilename( NULL, osName, "hdr" ) );
-    if( iFile < 0 ) // return if there is no corresponding .hdr file
-        return NULL;
+    CPLString osHDRFilename;
+    if (poOpenInfo->papszSiblingFiles != NULL)
+    {
+        int iFile = CSLFindString(poOpenInfo->papszSiblingFiles, 
+                                CPLFormFilename( NULL, osName, "hdr" ) );
+        if( iFile < 0 ) // return if there is no corresponding .hdr file
+            return NULL;
 
-    CPLString osHDRFilename = 
-        CPLFormFilename( osPath, poOpenInfo->papszSiblingFiles[iFile], NULL );
+        osHDRFilename = 
+            CPLFormFilename( osPath, poOpenInfo->papszSiblingFiles[iFile], NULL );
+    }
+    else
+    {
+        osHDRFilename = CPLFormCIFilename( osPath, osName, "hdr" );
+    }
 
     bSelectedHDR = EQUAL( osHDRFilename, poOpenInfo->pszFilename );
 
Index: frmts/raw/ehdrdataset.cpp
===================================================================
--- frmts/raw/ehdrdataset.cpp	(révision 13619)
+++ frmts/raw/ehdrdataset.cpp	(copie de travail)
@@ -948,13 +948,21 @@
     CPLString osPath = CPLGetPath( poOpenInfo->pszFilename );
     CPLString osName = CPLGetBasename( poOpenInfo->pszFilename );
 
-    int iFile = CSLFindString(poOpenInfo->papszSiblingFiles, 
-                              CPLFormFilename( NULL, osName, "hdr" ) );
-    if( iFile < 0 ) // return if there is no corresponding .hdr file
-        return NULL;
+    CPLString osHDRFilename;
+    if (poOpenInfo->papszSiblingFiles != NULL)
+    {
+        int iFile = CSLFindString(poOpenInfo->papszSiblingFiles, 
+                                CPLFormFilename( NULL, osName, "hdr" ) );
+        if( iFile < 0 ) // return if there is no corresponding .hdr file
+            return NULL;
 
-    CPLString osHDRFilename = 
-        CPLFormFilename( osPath, poOpenInfo->papszSiblingFiles[iFile], NULL );
+        osHDRFilename = 
+            CPLFormFilename( osPath, poOpenInfo->papszSiblingFiles[iFile], NULL );
+    }
+    else
+    {
+        osHDRFilename = CPLFormCIFilename( osPath, osName, "hdr" );
+    }
 
     bSelectedHDR = EQUAL( osHDRFilename, poOpenInfo->pszFilename );
 

