aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEli Zaretskii2014-03-01 13:51:02 +0200
committerEli Zaretskii2014-03-01 13:51:02 +0200
commitcb8b26b4ba0660043c40093f99df4a5d5f5725fb (patch)
tree0d17d9c6ff1ecec46255f47fcebc074ae9db2e2b /src
parent504d5d5fadb19242f287f0970f57369580b74b1a (diff)
downloademacs-cb8b26b4ba0660043c40093f99df4a5d5f5725fb.tar.gz
emacs-cb8b26b4ba0660043c40093f99df4a5d5f5725fb.zip
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.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog5
-rw-r--r--src/fileio.c16
2 files changed, 14 insertions, 7 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 704ac68b67e..1f351e71403 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
12014-03-01 Eli Zaretskii <eliz@gnu.org>
2
3 * fileio.c (Fexpand_file_name) [WINDOWSNT]: Don't treat file names
4 that start with more than 2 slashes as UNCs. (Bug#16751)
5
12014-02-28 Paul Eggert <eggert@penguin.cs.ucla.edu> 62014-02-28 Paul Eggert <eggert@penguin.cs.ucla.edu>
2 7
3 Fix a few crashes and leaks when cloning C strings. 8 Fix a few crashes and leaks when cloning C strings.
diff --git a/src/fileio.c b/src/fileio.c
index d03a2bcf02f..fb0a33b39db 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -1047,10 +1047,9 @@ filesystem tree, not (expand-file-name ".." dirname). */)
1047 nm++; 1047 nm++;
1048 1048
1049 /* Discard any previous drive specifier if nm is now in UNC format. */ 1049 /* Discard any previous drive specifier if nm is now in UNC format. */
1050 if (IS_DIRECTORY_SEP (nm[0]) && IS_DIRECTORY_SEP (nm[1])) 1050 if (IS_DIRECTORY_SEP (nm[0]) && IS_DIRECTORY_SEP (nm[1])
1051 { 1051 && !IS_DIRECTORY_SEP (nm[2]))
1052 drive = 0; 1052 drive = 0;
1053 }
1054#endif /* WINDOWSNT */ 1053#endif /* WINDOWSNT */
1055#endif /* DOS_NT */ 1054#endif /* DOS_NT */
1056 1055
@@ -1261,7 +1260,8 @@ filesystem tree, not (expand-file-name ".." dirname). */)
1261 && !IS_DIRECTORY_SEP (nm[0]) 1260 && !IS_DIRECTORY_SEP (nm[0])
1262#endif 1261#endif
1263#ifdef WINDOWSNT 1262#ifdef WINDOWSNT
1264 && !(IS_DIRECTORY_SEP (nm[0]) && IS_DIRECTORY_SEP (nm[1])) 1263 && !(IS_DIRECTORY_SEP (nm[0]) && IS_DIRECTORY_SEP (nm[1])
1264 && !IS_DIRECTORY_SEP (nm[2]))
1265#endif 1265#endif
1266 && !newdir) 1266 && !newdir)
1267 { 1267 {
@@ -1286,7 +1286,8 @@ filesystem tree, not (expand-file-name ".." dirname). */)
1286 && IS_DEVICE_SEP (newdir[1]) && IS_DIRECTORY_SEP (newdir[2])) 1286 && IS_DEVICE_SEP (newdir[1]) && IS_DIRECTORY_SEP (newdir[2]))
1287#ifdef WINDOWSNT 1287#ifdef WINDOWSNT
1288 /* Detect Windows file names in UNC format. */ 1288 /* Detect Windows file names in UNC format. */
1289 && ! (IS_DIRECTORY_SEP (newdir[0]) && IS_DIRECTORY_SEP (newdir[1])) 1289 && ! (IS_DIRECTORY_SEP (newdir[0]) && IS_DIRECTORY_SEP (newdir[1])
1290 && !IS_DIRECTORY_SEP (newdir[2]))
1290#endif 1291#endif
1291 ) 1292 )
1292 { 1293 {
@@ -1346,7 +1347,8 @@ filesystem tree, not (expand-file-name ".." dirname). */)
1346 if (IS_DIRECTORY_SEP (nm[0]) && collapse_newdir) 1347 if (IS_DIRECTORY_SEP (nm[0]) && collapse_newdir)
1347 { 1348 {
1348#ifdef WINDOWSNT 1349#ifdef WINDOWSNT
1349 if (IS_DIRECTORY_SEP (newdir[0]) && IS_DIRECTORY_SEP (newdir[1])) 1350 if (IS_DIRECTORY_SEP (newdir[0]) && IS_DIRECTORY_SEP (newdir[1])
1351 && !IS_DIRECTORY_SEP (newdir[2]))
1350 { 1352 {
1351 char *adir = strcpy (alloca (strlen (newdir) + 1), newdir); 1353 char *adir = strcpy (alloca (strlen (newdir) + 1), newdir);
1352 char *p = adir + 2; 1354 char *p = adir + 2;