Blame SOURCES/nss-util-policy-double-newline.patch

faeb29
diff --git a/lib/util/utilmod.c b/lib/util/utilmod.c
faeb29
--- a/lib/util/utilmod.c
faeb29
+++ b/lib/util/utilmod.c
faeb29
@@ -227,20 +227,25 @@ nssutil_ReadSecmodDB(const char *appName
faeb29
      * the following loop takes line separated config lines and collapses
faeb29
      * the lines to a single string, escaping and quoting as necessary.
faeb29
      */
faeb29
     /* loop state variables */
faeb29
     moduleString = NULL;   /* current concatenated string */
faeb29
     internal = PR_FALSE;   /* is this an internal module */
faeb29
     skipParams = PR_FALSE; /* did we find an override parameter block*/
faeb29
     paramsValue = NULL;    /* the current parameter block value */
faeb29
-    while (fgets(line, sizeof(line), fd) != NULL) {
faeb29
-        int len = PORT_Strlen(line);
faeb29
+    do {
faeb29
+        int len;
faeb29
+
faeb29
+        if (fgets(line, sizeof(line), fd) == NULL) {
faeb29
+            goto endloop;
faeb29
+        }
faeb29
 
faeb29
         /* remove the ending newline */
faeb29
+        len = PORT_Strlen(line);
faeb29
         if (len && line[len - 1] == '\n') {
faeb29
             len--;
faeb29
             line[len] = 0;
faeb29
         }
faeb29
         if (*line == '#') {
faeb29
             continue;
faeb29
         }
faeb29
         if (*line != 0) {
faeb29
@@ -339,16 +344,17 @@ nssutil_ReadSecmodDB(const char *appName
faeb29
                 }
faeb29
             }
faeb29
             continue;
faeb29
         }
faeb29
         if ((moduleString == NULL) || (*moduleString == 0)) {
faeb29
             continue;
faeb29
         }
faeb29
 
faeb29
+    endloop:
faeb29
         /*
faeb29
          * if we are here, we have found a complete stanza. Now write out
faeb29
          * any param section we may have found.
faeb29
          */
faeb29
         if (paramsValue) {
faeb29
             /* we had an override */
faeb29
             if (!skipParams) {
faeb29
                 moduleString = nssutil_DupnCat(moduleString, " parameters=", 12);
faeb29
@@ -374,17 +380,17 @@ nssutil_ReadSecmodDB(const char *appName
faeb29
             moduleList[0] = moduleString;
faeb29
         } else {
faeb29
             moduleList[moduleCount] = moduleString;
faeb29
             moduleCount++;
faeb29
         }
faeb29
         moduleString = NULL;
faeb29
         internal = PR_FALSE;
faeb29
         skipParams = PR_FALSE;
faeb29
-    }
faeb29
+    } while (!feof(fd));
faeb29
 
faeb29
     if (moduleString) {
faeb29
         PORT_Free(moduleString);
faeb29
         moduleString = NULL;
faeb29
     }
faeb29
 done:
faeb29
     /* if we couldn't open a pkcs11 database, look for the old one */
faeb29
     if (fd == NULL) {