From: Jeffrey Altman Date: Tue, 17 Aug 2010 05:24:39 +0000 (-0400) Subject: Windows: fix Freelance trailing dot enforcement X-Git-Tag: openafs-devel-1_5_77~45 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=db48e56a8b75f82e803517a86d2e72e2a56f96b5;p=packages%2Fo%2Fopenafs.git 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 (cherry picked from commit a81c323fbd05cb5cb85c56dfcc0b540e0354f318) Reviewed-on: http://gerrit.openafs.org/2589 Tested-by: Derrick Brashear --- 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;