Windows: fix Freelance trailing dot enforcement
authorJeffrey Altman <jaltman@your-file-system.com>
Tue, 17 Aug 2010 05:24:39 +0000 (01:24 -0400)
committerDerrick Brashear <shadow@dementia.org>
Tue, 17 Aug 2010 13:19:10 +0000 (06:19 -0700)
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 <jaltman@openafs.org>
Tested-by: Jeffrey Altman <jaltman@openafs.org>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

src/WINNT/afsd/cm_freelance.c

index 59bd6bc..3deac24 100644 (file)
@@ -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;