diff options
Diffstat (limited to 'path.c')
| -rw-r--r-- | path.c | 12 |
1 files changed, 9 insertions, 3 deletions
@@ -733,7 +733,7 @@ char *interpolate_path(const char *path, int real_home) struct strbuf user_path = STRBUF_INIT; const char *to_copy = path; - if (path == NULL) + if (!path) goto return_null; if (skip_prefix(path, "%(prefix)/", &path)) @@ -901,7 +901,13 @@ int adjust_shared_perm(const char *path) if (S_ISDIR(old_mode)) { /* Copy read bits to execute bits */ new_mode |= (new_mode & 0444) >> 2; - new_mode |= FORCE_DIR_SET_GID; + + /* + * g+s matters only if any extra access is granted + * based on group membership. + */ + if (FORCE_DIR_SET_GID && (new_mode & 060)) + new_mode |= FORCE_DIR_SET_GID; } if (((old_mode ^ new_mode) & ~S_IFMT) && @@ -1413,7 +1419,7 @@ int is_ntfs_dotgit(const char *name) for (;;) { c = *(name++); - if (!c || c == '\\' || c == '/' || c == ':') + if (!c || is_xplatform_dir_sep(c) || c == ':') return 1; if (c != '.' && c != ' ') return 0; |
