summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2005-08-11 07:31:17 +0000
committerSergey Poznyakoff <gray@gnu.org.ua>2005-08-11 07:31:17 +0000
commit201614344012a58d96a9564308b0201351b8b36f (patch)
treeb685c19d0ecaa66aac613eac622eaa30e95ed57c
parent112667db93eb302e88e70d6308194f0155db9d42 (diff)
downloadmailutils-201614344012a58d96a9564308b0201351b8b36f.tar.gz
mailutils-201614344012a58d96a9564308b0201351b8b36f.tar.bz2
(get_pathname): Make sure no extra slash is inserted.
-rw-r--r--mailbox/mbox/folder.c13
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;
}

Return to:

Send suggestions and report system problems to the System administrator.