Fix bug 700121
[fw/sdcc] / src / SDCCpeeph.c
index 0b352f77caa738a11b5a69e5aafc828f8debc58c..a928f3a0e1084f1b0b0a1a5add4c7d6660b5f40a 100644 (file)
@@ -66,7 +66,7 @@ pcDistance (lineNode * cpos, char *lbl, bool back)
   char buff[MAX_PATTERN_LEN];
   int dist = 0;
 
-  sprintf (buff, "%s:", lbl);
+  SNPRINTF (buff, sizeof(buff), "%s:", lbl);
   while (pl)
     {
 
@@ -554,8 +554,7 @@ newPeepRule (lineNode * match,
 
   if (cond && *cond)
     {
-      pr->cond = Safe_alloc ( strlen (cond) + 1);
-      strcpy (pr->cond, cond);
+      pr->cond = Safe_strdup (cond);
     }
   else
     pr->cond = NULL;
@@ -580,8 +579,7 @@ newLineNode (char *line)
   lineNode *pl;
 
   pl = Safe_alloc ( sizeof (lineNode));
-  pl->line = Safe_alloc ( strlen (line) + 1);
-  strcpy (pl->line, line);
+  pl->line = Safe_strdup (line);
   return pl;
 }
 
@@ -817,8 +815,7 @@ bindVar (int key, char **s, hTab ** vtab)
   *s = vvx;
   *vv = '\0';
   /* got value */
-  vvx = traceAlloc (&_G.values, Safe_alloc(strlen (vval) + 1));
-  strcpy (vvx, vval);
+  vvx = traceAlloc (&_G.values, Safe_strdup(vval));
 
   hTabAddItem (vtab, key, vvx);
 }
@@ -1312,12 +1309,11 @@ readFileIntoBuffer (char *fname)
          if (rs)
            {
              rs = Safe_realloc (rs, strlen (rs) + strlen (lb) + 1);
-             strcat (rs, lb);
+             strncatz (rs, lb,  strlen (rs) + strlen (lb) + 1);
            }
          else
            {
-             rs = Safe_alloc ( strlen (lb) + 1);
-             strcpy (rs, lb);
+             rs = Safe_strdup (lb);
            }
          nch = 0;
        }
@@ -1331,12 +1327,11 @@ readFileIntoBuffer (char *fname)
       if (rs)
        {
          rs = Safe_realloc (rs, strlen (rs) + strlen (lb) + 1);
-         strcat (rs, lb);
+         strncatz (rs, lb, strlen (rs) + strlen (lb) + 1);
        }
       else
        {
-         rs = Safe_alloc ( strlen (lb) + 1);
-         strcpy (rs, lb);
+         rs = Safe_strdup (lb);
        }
     }
   return rs;