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.8.0_pre1^2~4257 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=959a892afcc1f33871489912a8ea183fc7fca6c2;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() 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 --- 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)