config/util: resolve coverity issues
authorPeter Howkins <flibble@users.sf.net>
Wed, 4 Apr 2018 19:16:24 +0000 (20:16 +0100)
committerPeter Howkins <flibble@users.sf.net>
Wed, 4 Apr 2018 19:16:24 +0000 (20:16 +0100)
cde/config/util/lndir.c
cde/config/util/makestrs.c

index 9dd676e27b851dcff59843ae802cff5efa5bc7ef..f2a47661a8accdef6d8e6692ce9107bf5e043740 100644 (file)
@@ -179,7 +179,7 @@ int equivalent(lname, rname)
        return 1;
     for (s = lname; *s && (s = strchr(s, '/')); s++) {
        while (s[1] == '/')
-           strcpy(s+1, s+2);
+           memmove(s + 1, s + 2, strlen(s + 2) + 1);
     }
     return !strcmp(lname, rname);
 }
@@ -210,12 +210,12 @@ int rel;                  /* if true, prepend "../" to fn before using */
        return 1;
     }
 
-    if (rel)
-       strcpy (buf, "../");
-    else
-       buf[0] = '\0';
-    strcat (buf, fn);
-    
+    if (rel) {
+       snprintf(buf, sizeof(buf), "../%s", fn);
+    } else {
+       snprintf(buf, sizeof(buf), "%s", fn);
+    }
+
     if (!(df = opendir (buf))) {
        msg ("%s: Cannot opendir", buf);
        return 1;
index bae88f19dccee93938d8335105215ca6cba599f9..1c265d69396f8ee52d932ad97c8bf2dbae50f423 100644 (file)
@@ -298,10 +298,12 @@ static void WriteHeader (tagline, phile, abi)
 
     (*headerproc[abi])(f, phile);
 
-    if (phile->tmpl) CopyTmplEpilog (phile->tmpl, f);
+    if (phile->tmpl) {
+           CopyTmplEpilog (phile->tmpl, f);
+           (void) fclose (phile->tmpl);
+    }
 
     (void) free (fileprotstr);
-    (void) fclose (phile->tmpl);
     (void) fclose (f);
 }
 
@@ -465,7 +467,10 @@ static void WriteSource(tagline, abi)
 
     (*sourceproc[abi])(abi);
 
-    if (tmpl) CopyTmplEpilog (tmpl, stdout);
+    if (tmpl) {
+           CopyTmplEpilog (tmpl, stdout);
+           fclose(tmpl);
+    }
 }
 
 static void DoLine(buf)
@@ -613,8 +618,7 @@ static void DoLine(buf)
            else
                right = buf + 1;
            if (buf[0] == 'H') {
-               strncpy (lbuf, prefixstr, 1024);
-               strncat (lbuf, right, strlen(right));
+               snprintf(lbuf, sizeof(lbuf), "%s%s", prefixstr, right);
                right = lbuf;
            }