From 959a892afcc1f33871489912a8ea183fc7fca6c2 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Thu, 20 Jan 2011 01:35:08 -0500 Subject: [PATCH] vol: avoid double dir separators from addtoname The manner in which addtoname() is used can often result in double dir separators in path names. Check for it and avoid doubling the separator in addtoname() Change-Id: Ie33459bec3bcc93f81f13020cd35ed8c473b6ca5 Reviewed-on: http://gerrit.openafs.org/3699 Reviewed-by: Derrick Brashear Reviewed-by: Andrew Deason Reviewed-by: Rod Widdowson Tested-by: BuildBot --- src/vol/namei_ops.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/vol/namei_ops.c b/src/vol/namei_ops.c index 9d562717b..9175aa0d8 100644 --- a/src/vol/namei_ops.c +++ b/src/vol/namei_ops.c @@ -248,17 +248,18 @@ namei_HandleToInodeDir(namei_t * name, IHandle_t * ih) */ volutil_PartitionName_r(ih->ih_dev, name->n_base, sizeof(name->n_base)); offset = VICE_PREFIX_SIZE + (ih->ih_dev > 25 ? 2 : 1); - name->n_base[offset] = '/'; + name->n_base[offset] = OS_DIRSEPC; offset++; strlcpy(name->n_base + offset, INODEDIR, sizeof(name->n_base) - offset); strlcpy(name->n_path, name->n_base, sizeof(name->n_path)); } #endif -#define addtoname(N, C) \ -do { \ - strlcat((N)->n_path, OS_DIRSEP, sizeof((N)->n_path)); \ - strlcat((N)->n_path, (C), sizeof((N)->n_path)); \ +#define addtoname(N, C) \ +do { \ + if ((N)->n_path[strlen((N)->n_path)-1] != OS_DIRSEPC) \ + strlcat((N)->n_path, OS_DIRSEP, sizeof((N)->n_path)); \ + strlcat((N)->n_path, (C), sizeof((N)->n_path)); \ } while(0) -- 2.39.5