]> git.wh0rd.org Git - nano.git/commitdiff
in get_real_dir_from_tilde(), fix segfault when dealing with directory
authorDavid Lawrence Ramsey <pooka109@gmail.com>
Tue, 17 Apr 2007 03:43:59 +0000 (03:43 +0000)
committerDavid Lawrence Ramsey <pooka109@gmail.com>
Tue, 17 Apr 2007 03:43:59 +0000 (03:43 +0000)
names that begin with "~", but that aren't users' home directories

git-svn-id: svn://svn.savannah.gnu.org/nano/branches/nano_2_0_branch/nano@4072 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
src/files.c

index 114faac43070a96cd5a530d164b78f9bc0c9f04d..546e70783dbf3d2307cb17f31731bc9c119e99b6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,9 @@
 CVS code -
+- files.c:
+  get_real_dir_from_tilde()
+       - Fix segfault when dealing with directory names that begin with
+         "~", but that aren't users' home directories. (DLR, found by
+         Justin Fletcher)
 - doc/syntax/asm.nanorc, doc/syntax/c.nanorc, doc/syntax/sh.nanorc:
        - Copy the regex that highlights trailing whitespace from
          doc/syntax/java.nanorc to these files, as it's also useful in
index 90060277bf119d5b869adfcd7780b4e81ad7709d..68d760e63945138e203229c888586d2f0d9e311d 100644 (file)
@@ -1979,7 +1979,7 @@ char *real_dir_from_tilde(const char *buf)
 
     if (buf[0] == '~') {
        size_t i;
-       const char *tilde_dir;
+       const char *tilde_dir = NULL;
 
        /* Figure out how much of the str we need to compare. */
        for (i = 1; buf[i] != '/' && buf[i] != '\0'; i++)
@@ -1997,7 +1997,8 @@ char *real_dir_from_tilde(const char *buf)
            } while (userdata != NULL &&
                strncmp(userdata->pw_name, buf + 1, i - 1) != 0);
            endpwent();
-           tilde_dir = userdata->pw_dir;
+           if (userdata != NULL)
+               tilde_dir = userdata->pw_dir;
        }
 
        if (tilde_dir != NULL) {