diff options
Diffstat (limited to 'source/n/rdist/rdist-6.1.5-01.links.diff')
-rw-r--r-- | source/n/rdist/rdist-6.1.5-01.links.diff | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/source/n/rdist/rdist-6.1.5-01.links.diff b/source/n/rdist/rdist-6.1.5-01.links.diff new file mode 100644 index 00000000..187dce4d --- /dev/null +++ b/source/n/rdist/rdist-6.1.5-01.links.diff @@ -0,0 +1,74 @@ +--- 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; + }; + |