DragonFly BSD
DragonFly bugs List (threaded) for 2004-09
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

[delphij@FreeBSD.org: cvs commit: src/bin/rcp rcp.c]


From: Xin LI <delphij@xxxxxxxxxxxxx>
Date: Thu, 16 Sep 2004 20:27:05 +0800

FYI, a patch suitable for DragonFly is included in attachment.

----- Forwarded message from Xin LI <delphij@xxxxxxxxxxx> -----

Date: Thu, 16 Sep 2004 12:16:10 +0000 (UTC)
From: Xin LI <delphij@xxxxxxxxxxx>
	cvs-all@xxxxxxxxxxx
Subject: cvs commit: src/bin/rcp rcp.c
X-Sieve: CMU Sieve 2.2
Delivered-To: delphij@xxxxxxxxxxx
Delivered-To: src-committers@xxxxxxxxxxx
X-FreeBSD-CVS-Branch: RELENG_4
Precedence: bulk
X-Loop: FreeBSD.ORG
X-Virus-Scanned: by amavisd-new at frontfree.net

delphij     2004-09-16 12:16:10 UTC

  FreeBSD src repository

  Modified files:        (Branch: RELENG_4)
    bin/rcp              rcp.c 
  Log:
  MFC revision 1.37
  date: 2002/10/06 09:09:27;  author: charnier;  state: Exp;  lines: +11 -16
  While removing a memory leak, rev 1.32 introduced a
  free-memory-and-reuse-it-after. Correct both problems and
  make rcp -r work again under /etc/malloc.conf -> AJ.
  
  PR:             bin/54969
  Approved by:    murray (mentor)
  
  Revision  Changes    Path
  1.26.2.6  +11 -16    src/bin/rcp/rcp.c

----- End forwarded message -----

-- 
Xin LI <delphij frontfree net>	http://www.delphij.net/
See complete headers for GPG key and other information.

Index: rcp.c
===================================================================
RCS file: /home/dcvs/src/bin/rcp/rcp.c,v
retrieving revision 1.3
diff -u -r1.3 rcp.c
--- rcp.c	19 Mar 2004 17:17:46 -0000	1.3
+++ rcp.c	16 Sep 2004 12:25:21 -0000
@@ -39,7 +39,7 @@
  *
  * @(#) Copyright (c) 1983, 1990, 1992, 1993 The Regents of the University of California.  All rights reserved.
  * @(#)rcp.c	8.2 (Berkeley) 4/2/94
- * $FreeBSD: src/bin/rcp/rcp.c,v 1.26.2.5 2002/08/16 20:06:34 ume Exp $
+ * $FreeBSD: src/bin/rcp/rcp.c,v 1.26.2.6 2004/09/16 12:16:10 delphij Exp $
  * $DragonFly: src/bin/rcp/rcp.c,v 1.3 2004/03/19 17:17:46 cpressey Exp $
  */
 
@@ -581,7 +581,7 @@
 	size_t amt, count;
 	int exists, first, mask, mode, ofd, omode;
 	int setimes, targisdir, wrerrno = 0;
-	char ch, *cp, *np, *targ, *why, *vect[1], buf[BUFSIZ];
+	char ch, *cp, *np, *targ, *why, *vect[1], buf[BUFSIZ], path[PATH_MAX];
 
 #define	atime	tv[0]
 #define	mtime	tv[1]
@@ -678,21 +678,15 @@
 		if (*cp++ != ' ')
 			SCREWUP("size not delimited");
 		if (targisdir) {
-			static char *namebuf = NULL;
-			static size_t cursize;
-			size_t need;
-
-			need = strlen(targ) + strlen(cp) + 250;
-			if (need > cursize) {
-				if (namebuf != NULL)
-					free(namebuf);
-				if (!(namebuf = malloc(need)))
-					run_err("%s", strerror(errno));
-				cursize = need;
+			if (strlen(targ) + (*targ ? 1 : 0) + strlen(cp)
+					>= sizeof(path)) {
+				run_err("%s%s%s: name too long", targ,
+					*targ ? "/" : "", cp);
+				exit(1);
 			}
-			(void)snprintf(namebuf, need, "%s%s%s", targ,
+			(void)snprintf(path, sizeof(path), "%s%s%s", targ,
 			    *targ ? "/" : "", cp);
-			np = namebuf;
+			np = path;
 		} else
 			np = targ;
 		exists = stat(np, &stb) == 0;

Attachment: pgp00012.pgp
Description: PGP signature



[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]