files: when the requested operating directory cannot be set, fail

Specifying an operating directory should either lead to a successfull
confinement, or nano should fail to start.

(Also: save the terminal settings as soon as possible, so that an early
die() will not restore uninitialized values.)

This fixes the first part of https://savannah.gnu.org/bugs/?47798 properly.
This commit is contained in:
Benno Schulenberg
2016-06-12 11:13:45 +02:00
parent 5aa1df37d1
commit aa09abe198
2 changed files with 12 additions and 18 deletions

View File

@@ -1563,15 +1563,9 @@ void init_operating_dir(void)
full_operating_dir = get_full_path(operating_dir);
/* If get_full_path() failed or the operating directory is
* inaccessible, unset operating_dir. */
if (full_operating_dir == NULL || chdir(full_operating_dir) == -1) {
statusline(ALERT, _("Not a valid directory: %s"), operating_dir);
free(full_operating_dir);
full_operating_dir = NULL;
free(operating_dir);
operating_dir = NULL;
}
/* If the operating directory is inaccessible, fail. */
if (full_operating_dir == NULL || chdir(full_operating_dir) == -1)
die("Invalid operating directory\n");
}
/* Check to see if we're inside the operating directory. Return FALSE