From: Jeffrey Altman Date: Thu, 20 Jan 2011 06:35:08 +0000 (-0500) Subject: vol: avoid double dir separators from addtoname X-Git-Tag: upstream/1.6.0.pre2^2~63 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=278e58232ebbed48c1ce3e3a3833a5ff2df3c1ee;p=packages%2Fo%2Fopenafs.git 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 --- 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)