From 278e58232ebbed48c1ce3e3a3833a5ff2df3c1ee 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() Reviewed-on: http://gerrit.openafs.org/3699 Reviewed-by: Derrick Brashear Reviewed-by: Andrew Deason Reviewed-by: Rod Widdowson Tested-by: BuildBot (cherry picked from commit 959a892afcc1f33871489912a8ea183fc7fca6c2) Change-Id: Ic9942f08af4ce45310bfffae5922c67a0655774d Reviewed-on: http://gerrit.openafs.org/3846 Reviewed-by: Derrick Brashear Tested-by: Derrick Brashear --- 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 50d50b1e3..a1535ddf5 100644 --- a/src/vol/namei_ops.c +++ b/src/vol/namei_ops.c @@ -244,17 +244,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