Avoiding the loss a buffer when getcwd() fails.

This fixes Savannah bug #47129 reported by Mike Frysinger.


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5647 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
This commit is contained in:
Benno Schulenberg 2016-02-15 16:24:39 +00:00
parent 6c0e5e3f2c
commit 706f01422d
2 changed files with 5 additions and 5 deletions

View File

@ -2,6 +2,8 @@
* src/files.c (read_file): Free not just the struct but also the * src/files.c (read_file): Free not just the struct but also the
data it contains, and also when it is the first and only line. data it contains, and also when it is the first and only line.
This fixes Savannah bug #47153 reported by Mike Frysinger. This fixes Savannah bug #47153 reported by Mike Frysinger.
* src/files.c (get_full_path): Avoid losing a buffer when getcwd()
fails. This fixes Savannah bug #47129 reported by Mike Frysinger.
2016-02-14 Benno Schulenberg <bensberg@justemail.net> 2016-02-14 Benno Schulenberg <bensberg@justemail.net>
* src/search.c (do_replace_loop): Make iterating through replacement * src/search.c (do_replace_loop): Make iterating through replacement

View File

@ -1413,14 +1413,13 @@ char *get_full_path(const char *origpath)
/* Get the current directory. If it doesn't exist, back up and try /* Get the current directory. If it doesn't exist, back up and try
* again until we get a directory that does, and use that as the * again until we get a directory that does, and use that as the
* current directory. */ * current directory. */
d_here = charalloc(PATH_MAX + 1); d_here = getcwd(NULL, PATH_MAX + 1);
d_here = getcwd(d_here, PATH_MAX + 1);
while (d_here == NULL) { while (d_here == NULL) {
if (chdir("..") == -1) if (chdir("..") == -1)
break; break;
d_here = getcwd(d_here, PATH_MAX + 1); d_here = getcwd(NULL, PATH_MAX + 1);
} }
/* If we succeeded, canonicalize it in d_here. */ /* If we succeeded, canonicalize it in d_here. */
@ -1481,8 +1480,7 @@ char *get_full_path(const char *origpath)
free(d_there); free(d_there);
/* Get the full path. */ /* Get the full path. */
d_there = charalloc(PATH_MAX + 1); d_there = getcwd(NULL, PATH_MAX + 1);
d_there = getcwd(d_there, PATH_MAX + 1);
/* If we succeeded, canonicalize it in d_there. */ /* If we succeeded, canonicalize it in d_there. */
if (d_there != NULL) { if (d_there != NULL) {