diff options
Diffstat (limited to 'source/a/slocate/slocate.CVE-2007-0277.diff')
-rw-r--r-- | source/a/slocate/slocate.CVE-2007-0277.diff | 42 |
1 files changed, 0 insertions, 42 deletions
diff --git a/source/a/slocate/slocate.CVE-2007-0277.diff b/source/a/slocate/slocate.CVE-2007-0277.diff deleted file mode 100644 index 4f109922..00000000 --- a/source/a/slocate/slocate.CVE-2007-0277.diff +++ /dev/null @@ -1,42 +0,0 @@ ---- slocate-3.1.orig/src/utils.c -+++ slocate-3.1/src/utils.c -@@ -524,6 +524,7 @@ - { - struct stat path_stat; - int ret = 0; -+ char *path_copy = NULL; - char *ptr = NULL; - - if (lstat(path, &path_stat) == -1) -@@ -532,15 +533,25 @@ - if (!S_ISLNK(path_stat.st_mode)) { - if (access(path, F_OK) != 0) - goto EXIT; -- } else if ((ptr = rindex(path, '/'))) { -- *ptr = 0; -- if (access(path, F_OK) == 0) -- ret = 1; -- *ptr = '/'; -- goto EXIT; - } - -+ /* "path" is const, so we shouldn't modify it. Also, for speed, -+ * I suspect strdup/free is less expensive than the deep access -+ * checks... */ -+ if (!(path_copy = strdup(path))) -+ goto EXIT; -+ - ret = 1; -+ -+ /* Each directory leading to the file (symlink or not) must be -+ * readable for us to allow it to be listed in search results. */ -+ while (ret && (ptr=rindex(path_copy,'/'))) { -+ *ptr=0; -+ if (*path_copy && access(path_copy, R_OK) != 0) -+ ret = 0; -+ } -+ free(path_copy); -+ - EXIT: - return ret; - } |