mirror of
https://github.com/neovim/neovim.git
synced 2025-09-17 08:48:16 +00:00
feat: stdpath('run'), /tmp/nvim.user/ #18993
Problem:
- Since c57f6b28d7
#8519, sockets are created in ~/.local/… but XDG
spec says: "XDG_RUNTIME_DIR: Must be on the local filesystem", which
implies that XDG_STATE_DIR is potentially non-local.
- Not easy to inspect Nvim-created temp files (for debugging etc).
Solution:
- Store sockets in stdpath('run') ($XDG_RUNTIME_DIR).
- Establish "/tmp/nvim.user/" as the tempdir root shared by all Nvims.
- Make ok() actually useful.
- Introduce assert_nolog().
closes #3517
closes #17093
This commit is contained in:
@@ -2016,14 +2016,14 @@ static void source_startup_scripts(const mparm_T *const parmp)
|
||||
// do_user_initialization.
|
||||
#if defined(UNIX)
|
||||
// If vimrc file is not owned by user, set 'secure' mode.
|
||||
if (!file_owned(VIMRC_FILE))
|
||||
if (!os_file_owned(VIMRC_FILE)) // NOLINT(readability/braces)
|
||||
#endif
|
||||
secure = p_secure;
|
||||
|
||||
if (do_source(VIMRC_FILE, true, DOSO_VIMRC) == FAIL) {
|
||||
#if defined(UNIX)
|
||||
// if ".exrc" is not owned by user set 'secure' mode
|
||||
if (!file_owned(EXRC_FILE)) {
|
||||
if (!os_file_owned(EXRC_FILE)) {
|
||||
secure = p_secure;
|
||||
} else {
|
||||
secure = 0;
|
||||
@@ -2068,23 +2068,6 @@ static int execute_env(char *env)
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
#ifdef UNIX
|
||||
/// Checks if user owns file.
|
||||
/// Use both uv_fs_stat() and uv_fs_lstat() through os_fileinfo() and
|
||||
/// os_fileinfo_link() respectively for extra security.
|
||||
static bool file_owned(const char *fname)
|
||||
{
|
||||
assert(fname != NULL);
|
||||
uid_t uid = getuid();
|
||||
FileInfo file_info;
|
||||
bool file_owned = os_fileinfo(fname, &file_info)
|
||||
&& file_info.stat.st_uid == uid;
|
||||
bool link_owned = os_fileinfo_link(fname, &file_info)
|
||||
&& file_info.stat.st_uid == uid;
|
||||
return file_owned && link_owned;
|
||||
}
|
||||
#endif
|
||||
|
||||
/// Prints the following then exits:
|
||||
/// - An error message `errstr`
|
||||
/// - A string `str` if not null
|
||||
|
Reference in New Issue
Block a user