emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] trunk r116624: Fix bug #16751 with crashes in expand-file-


From: Eli Zaretskii
Subject: [Emacs-diffs] trunk r116624: Fix bug #16751 with crashes in expand-file-name on Windows.
Date: Sat, 01 Mar 2014 11:51:50 +0000
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 116624
revision-id: address@hidden
parent: address@hidden
fixes bug: http://debbugs.gnu.org/16751
committer: Eli Zaretskii <address@hidden>
branch nick: trunk
timestamp: Sat 2014-03-01 13:51:02 +0200
message:
  Fix bug #16751 with crashes in expand-file-name on Windows.
  
   src/fileio.c (Fexpand_file_name) [WINDOWSNT]: Don't treat file names
   that start with more than 2 slashes as UNCs.
modified:
  src/ChangeLog                  changelog-20091113204419-o5vbwnq5f7feedwu-1438
  src/fileio.c                   fileio.c-20091113204419-o5vbwnq5f7feedwu-210
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2014-02-28 21:45:34 +0000
+++ b/src/ChangeLog     2014-03-01 11:51:02 +0000
@@ -1,3 +1,8 @@
+2014-03-01  Eli Zaretskii  <address@hidden>
+
+       * fileio.c (Fexpand_file_name) [WINDOWSNT]: Don't treat file names
+       that start with more than 2 slashes as UNCs.  (Bug#16751)
+
 2014-02-28  Paul Eggert  <address@hidden>
 
        Fix a few crashes and leaks when cloning C strings.

=== modified file 'src/fileio.c'
--- a/src/fileio.c      2014-01-29 13:21:25 +0000
+++ b/src/fileio.c      2014-03-01 11:51:02 +0000
@@ -1047,10 +1047,9 @@
     nm++;
 
   /* Discard any previous drive specifier if nm is now in UNC format.  */
-  if (IS_DIRECTORY_SEP (nm[0]) && IS_DIRECTORY_SEP (nm[1]))
-    {
-      drive = 0;
-    }
+  if (IS_DIRECTORY_SEP (nm[0]) && IS_DIRECTORY_SEP (nm[1])
+      && !IS_DIRECTORY_SEP (nm[2]))
+    drive = 0;
 #endif /* WINDOWSNT */
 #endif /* DOS_NT */
 
@@ -1261,7 +1260,8 @@
       && !IS_DIRECTORY_SEP (nm[0])
 #endif
 #ifdef WINDOWSNT
-      && !(IS_DIRECTORY_SEP (nm[0]) && IS_DIRECTORY_SEP (nm[1]))
+      && !(IS_DIRECTORY_SEP (nm[0]) && IS_DIRECTORY_SEP (nm[1])
+          && !IS_DIRECTORY_SEP (nm[2]))
 #endif
       && !newdir)
     {
@@ -1286,7 +1286,8 @@
             && IS_DEVICE_SEP (newdir[1]) && IS_DIRECTORY_SEP (newdir[2]))
 #ifdef WINDOWSNT
          /* Detect Windows file names in UNC format.  */
-         && ! (IS_DIRECTORY_SEP (newdir[0]) && IS_DIRECTORY_SEP (newdir[1]))
+         && ! (IS_DIRECTORY_SEP (newdir[0]) && IS_DIRECTORY_SEP (newdir[1])
+               && !IS_DIRECTORY_SEP (newdir[2]))
 #endif
          )
        {
@@ -1346,7 +1347,8 @@
       if (IS_DIRECTORY_SEP (nm[0]) && collapse_newdir)
        {
 #ifdef WINDOWSNT
-         if (IS_DIRECTORY_SEP (newdir[0]) && IS_DIRECTORY_SEP (newdir[1]))
+         if (IS_DIRECTORY_SEP (newdir[0]) && IS_DIRECTORY_SEP (newdir[1])
+             && !IS_DIRECTORY_SEP (newdir[2]))
            {
              char *adir = strcpy (alloca (strlen (newdir) + 1), newdir);
              char *p = adir + 2;


reply via email to

[Prev in Thread] Current Thread [Next in Thread]