diff options
Diffstat (limited to 'misc/mc/files/patch-CAN-2003-1023')
-rw-r--r-- | misc/mc/files/patch-CAN-2003-1023 | 39 |
1 files changed, 0 insertions, 39 deletions
diff --git a/misc/mc/files/patch-CAN-2003-1023 b/misc/mc/files/patch-CAN-2003-1023 deleted file mode 100644 index cf033e9adc70..000000000000 --- a/misc/mc/files/patch-CAN-2003-1023 +++ /dev/null @@ -1,39 +0,0 @@ ---- vfs/direntry.c.orig 2002-12-25 21:21:43.000000000 -0500 -+++ vfs/direntry.c 2004-01-21 09:38:53.000000000 -0500 -@@ -375,21 +375,31 @@ vfs_s_resolve_symlink (vfs *me, vfs_s_en - - /* Convert absolute paths to relative ones */ - if (*linkname == PATH_SEP) { -- char *p, *q; -+ char *p, *q, *r, *end; - - for (p = path, q = entry->ino->linkname; *p == *q; p++, q++); - while (*(--q) != PATH_SEP); - q++; -+ r = buf; -+ end = buf + MC_MAXPATHLEN; - for (;; p++) { - p = strchr (p, PATH_SEP); - if (!p) { -- strcat (buf, q); -+ size_t len = strlen (q); -+ -+ if (r + len >= end) -+ break; -+ -+ memcpy (r, q, len + 1); -+ linkname = buf; - break; - } -- strcat (buf, ".."); -- strcat (buf, PATH_SEP_STR); -+ -+ if (r + sizeof (".." PATH_SEP_STR) > end) -+ break; -+ memcpy (r, ".." PATH_SEP_STR, sizeof (".." PATH_SEP_STR) - 1); -+ r += sizeof (".." PATH_SEP_STR) - 1; - } -- linkname = buf; - } - - return (MEDATA->find_entry) (me, entry->dir, linkname, follow - 1, 0); |