Avoid crashes on MS-Windows due to invalid UNC file names
authorEli Zaretskii <eliz@gnu.org>
Wed, 22 May 2024 11:10:53 +0000 (14:10 +0300)
committerEli Zaretskii <eliz@gnu.org>
Wed, 22 May 2024 11:10:53 +0000 (14:10 +0300)
* src/w32.c (parse_root): Avoid crashes due to invalid (too short)
UNC names, such as "\\".  (Bug#70914)

* test/src/fileio-tests.el (fileio-tests-invalid-UNC): New test.

src/w32.c
test/src/fileio-tests.el

index d463962b6c318333c6c71504d9704ea59755fc5e..a78d5569fe671d80793d464f07b6448879cfb700 100644 (file)
--- a/src/w32.c
+++ b/src/w32.c
@@ -2572,7 +2572,7 @@ parse_root (const char * name, const char ** pPath)
       name += 2;
       do
         {
-         if (IS_DIRECTORY_SEP (*name) && --slashes == 0)
+         if (!*name || (IS_DIRECTORY_SEP (*name) && --slashes == 0))
            break;
          name++;
        }
index 764ae662e15c3a6259eaeaea699bd6fb60c1ef5f..136d3813a2bee35c827e8ef7fbbf7e4f614c5380 100644 (file)
@@ -218,4 +218,10 @@ Also check that an encoding error can appear in a symlink."
     (should (equal (expand-file-name file nil) file))
     (file-name-case-insensitive-p file)))
 
+(ert-deftest fileio-tests-invalid-UNC ()
+  (skip-unless (eq system-type 'windows-nt))
+  ;; These should not crash, see bug#70914.
+  (should-not (file-exists-p "//"))
+  (should (file-attributes "//")))
+
 ;;; fileio-tests.el ends here