Upstream-Status: Inappropriate [1] 
 | 
  
 | 
[1] Not the author, the patch is from: 
 | 
http://vault.centos.org/5.8/os/SRPMS/rdist-6.1.5-44.src.rpm 
 | 
  
 | 
--- rdist-6.1.5/src/client.c.links    Wed Feb 17 17:46:09 1999 
 | 
+++ rdist-6.1.5/src/client.c    Wed Feb 17 17:51:15 1999 
 | 
@@ -309,6 +309,18 @@ 
 | 
     return(0); 
 | 
 } 
 | 
  
 | 
+void freelinkinfo(lp) 
 | 
+    struct linkbuf *lp; 
 | 
+{ 
 | 
+    if (lp->pathname) 
 | 
+        free(lp->pathname); 
 | 
+    if (lp->src) 
 | 
+        free(lp->src); 
 | 
+    if (lp->target) 
 | 
+        free(lp->target); 
 | 
+    free(lp); 
 | 
+} 
 | 
+ 
 | 
 /* 
 | 
  * Save and retrieve hard link info 
 | 
  */ 
 | 
@@ -317,6 +329,7 @@ 
 | 
 { 
 | 
     struct linkbuf *lp; 
 | 
  
 | 
+    /* xxx: linear search doesn't scale with many links */ 
 | 
     for (lp = ihead; lp != NULL; lp = lp->nextp) 
 | 
         if (lp->inum == statp->st_ino && lp->devnum == statp->st_dev) { 
 | 
             lp->count--; 
 | 
@@ -329,12 +342,14 @@ 
 | 
     lp->inum = statp->st_ino; 
 | 
     lp->devnum = statp->st_dev; 
 | 
     lp->count = statp->st_nlink - 1; 
 | 
-    (void) strcpy(lp->pathname, target); 
 | 
-    (void) strcpy(lp->src, source); 
 | 
+    lp->pathname = strdup(target); 
 | 
+    lp->src = strdup(source); 
 | 
     if (Tdest) 
 | 
-        (void) strcpy(lp->target, Tdest); 
 | 
+        lp->target = strdup(Tdest); 
 | 
     else 
 | 
-        *lp->target = CNULL; 
 | 
+        lp->target = NULL; 
 | 
+    if (!lp->pathname || !lp->src || !(Tdest && lp->target)) 
 | 
+        fatalerr("Cannot malloc memory in linkinfo."); 
 | 
  
 | 
     return((struct linkbuf *) NULL); 
 | 
 } 
 | 
--- rdist-6.1.5/src/docmd.c.links    Wed Feb 17 17:51:23 1999 
 | 
+++ rdist-6.1.5/src/docmd.c    Wed Feb 17 17:52:44 1999 
 | 
@@ -586,7 +586,7 @@ 
 | 
     if (!nflag) { 
 | 
         register struct linkbuf *nextl, *l; 
 | 
  
 | 
-        for (l = ihead; l != NULL; free((char *)l), l = nextl) { 
 | 
+        for (l = ihead; l != NULL; freelinkinfo(l), l = nextl) { 
 | 
             nextl = l->nextp; 
 | 
             if (contimedout || IS_ON(opts, DO_IGNLNKS) ||  
 | 
                 l->count == 0) 
 | 
--- rdist-6.1.5/include/defs.h.links    Wed Feb 17 17:52:58 1999 
 | 
+++ rdist-6.1.5/include/defs.h    Wed Feb 17 17:53:47 1999 
 | 
@@ -276,9 +276,9 @@ 
 | 
     ino_t    inum; 
 | 
     dev_t    devnum; 
 | 
     int    count; 
 | 
-    char    pathname[BUFSIZ]; 
 | 
-    char    src[BUFSIZ]; 
 | 
-    char    target[BUFSIZ]; 
 | 
+    char    *pathname; 
 | 
+    char    *src; 
 | 
+    char    *target; 
 | 
     struct    linkbuf *nextp; 
 | 
 }; 
 | 
  
 |