Fixed #1776. __import__() no longer imports modules by file name
diff --git a/Lib/test/test_import.py b/Lib/test/test_import.py
index 9c44b87..a44170c 100644
--- a/Lib/test/test_import.py
+++ b/Lib/test/test_import.py
@@ -1,4 +1,4 @@
-from test.test_support import TESTFN, run_unittest, catch_warning
+from test.test_support import TESTFN, run_unittest, catch_warning
 
 import unittest
 import os
@@ -223,6 +223,16 @@
             warnings.simplefilter('error', ImportWarning)
             self.assertRaises(ImportWarning, __import__, "site-packages")
 
+    def test_importbyfilename(self):
+        path = os.path.abspath(TESTFN)
+        try:
+            __import__(path)
+        except ImportError, err:
+            self.assertEqual("Import by filename is not supported.",
+                              err.args[0])
+        else:
+            self.fail("import by path didn't raise an exception")
+
 class PathsTests(unittest.TestCase):
     path = TESTFN
 
diff --git a/Misc/NEWS b/Misc/NEWS
index 7cd84d3..021c8e1c 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,10 @@
 Core and builtins
 -----------------
 
+- Bug #1776: __import__ must not accept filenames. Python 2.6 does no longer
+  support module loading by filename. It worked on some system by coincident
+  but it was never intended to work.
+
 - Patch #1668: renamed THREADDEBUG envvar to PYTHONTHREADDEBUG.
 
 - Patch #602345: Add -B command line option, PYTHONDONTWRITEBYTECODE envvar
diff --git a/Python/import.c b/Python/import.c
index d9550f5..71ec20a 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -2055,6 +2055,16 @@
 	Py_ssize_t buflen = 0;
 	PyObject *parent, *head, *next, *tail;
 
+	if (strchr(name, '/') != NULL
+#ifdef MS_WINDOWS
+	    || strchr(name, '\\') != NULL
+#endif
+		) {
+		PyErr_SetString(PyExc_ImportError,
+				"Import by filename is not supported.");
+		return NULL;
+	}
+
 	parent = get_parent(globals, buf, &buflen, level);
 	if (parent == NULL)
 		return NULL;