diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2005-08-11 07:31:17 +0000 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2005-08-11 07:31:17 +0000 |
commit | 201614344012a58d96a9564308b0201351b8b36f (patch) | |
tree | b685c19d0ecaa66aac613eac622eaa30e95ed57c | |
parent | 112667db93eb302e88e70d6308194f0155db9d42 (diff) | |
download | mailutils-201614344012a58d96a9564308b0201351b8b36f.tar.gz mailutils-201614344012a58d96a9564308b0201351b8b36f.tar.bz2 |
(get_pathname): Make sure no extra slash is inserted.
-rw-r--r-- | mailbox/mbox/folder.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/mailbox/mbox/folder.c b/mailbox/mbox/folder.c index 158f593ae..af13519a6 100644 --- a/mailbox/mbox/folder.c +++ b/mailbox/mbox/folder.c @@ -446,10 +446,17 @@ get_pathname (const char *dirname, const char *basename) /* Relative. */ else { - size_t len = strlen (basename); - pathname = calloc (strlen (dirname) + len + 2, sizeof (char)); + size_t baselen = strlen (basename); + size_t dirlen = strlen (dirname); + while (dirlen > 0 && dirname[dirlen-1] == '/') + dirlen--; + pathname = calloc (dirname + baselen + 2, sizeof (char)); if (pathname) - sprintf (pathname, "%s/%s", dirname, basename); + { + memcpy (pathname, dirname, dirlen); + pathname[dirlen] = '/'; + strcpy (pathname + dirlen + 1, basename); + } } return pathname; } |