From a81c323fbd05cb5cb85c56dfcc0b540e0354f318 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Tue, 17 Aug 2010 01:24:39 -0400 Subject: [PATCH] Windows: fix Freelance trailing dot enforcement The cm_enforceTrailingDot() function failed if there was a trailing dot followed by white space. LICENSE MIT Change-Id: Ib6a90420459a44b87995c44a5f58fcdcd5041c9f Reviewed-on: http://gerrit.openafs.org/2588 Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman Reviewed-by: Derrick Brashear --- src/WINNT/afsd/cm_freelance.c | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/src/WINNT/afsd/cm_freelance.c b/src/WINNT/afsd/cm_freelance.c index 59bd6bcb4..3deac244b 100644 --- a/src/WINNT/afsd/cm_freelance.c +++ b/src/WINNT/afsd/cm_freelance.c @@ -501,13 +501,21 @@ int cm_reInitLocalMountPoints() { static int cm_enforceTrailingDot(char * line, size_t cchLine, DWORD *pdwSize) { - if (line[(*pdwSize)-1] == '\0' && line[(*pdwSize)-2] != '.') { - /* remove trailing whitespace */ + /* trailing white space first. */ + if (line[(*pdwSize)-1] == '\0') { while (isspace(line[(*pdwSize)-2])) { line[(*pdwSize)-2] = '\0'; (*pdwSize)--; } + } else { + while (isspace(line[(*pdwSize)-1])) { + line[(*pdwSize)-1] = '\0'; + (*pdwSize)--; + } + } + /* then enforce the trailing dot requirement */ + if (line[(*pdwSize)-1] == '\0' && line[(*pdwSize)-2] != '.') { if ((*pdwSize) >= cchLine) { afsi_log("no room for trailing dot"); return 0; @@ -515,12 +523,6 @@ cm_enforceTrailingDot(char * line, size_t cchLine, DWORD *pdwSize) line[(*pdwSize)-1] = '.'; line[(*pdwSize)] = '\0'; } else if (line[(*pdwSize)-1] != '\0' && line[(*pdwSize)-1] != '.') { - /* remove trailing whitespace */ - while (isspace(line[(*pdwSize)-1])) { - line[(*pdwSize)-1] = '\0'; - (*pdwSize)--; - } - if ((*pdwSize) >= cchLine) { afsi_log("no room for trailing dot and nul"); return 0; @@ -528,12 +530,6 @@ cm_enforceTrailingDot(char * line, size_t cchLine, DWORD *pdwSize) line[(*pdwSize)] = '.'; line[(*pdwSize)+1] = '\0'; } else if (line[(*pdwSize)-1] != '\0') { - /* remove trailing whitespace */ - while (isspace(line[(*pdwSize)-1])) { - line[(*pdwSize)-1] = '\0'; - (*pdwSize)--; - } - if ((*pdwSize) >= cchLine) { afsi_log("no room for trailing nul"); return 0; -- 2.39.5