Date: Mon, 2 Jul 2001 04:41:47 +1000 (EST) From: Bruce Evans <bde@zeta.org.au> To: Mike Barcroft <mike@q9media.com> Cc: audit@FreeBSD.org Subject: Re: src/bin/ed patch Message-ID: <Pine.BSF.4.21.0107020417590.33742-100000@besplex.bde.org> In-Reply-To: <200107011506.f61F6P904227@coffee.q9media.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, 1 Jul 2001, Mike Barcroft wrote: > Bruce Evans <bde@zeta.org.au> writes: > > On Fri, 29 Jun 2001, Mike Barcroft wrote: > > > o Since the rcsids are generating warnings, switch to __RCSID(). > > > > Please don't. obrien and I are trying to decide whether ids (initially > > in libc) should be changed to use __RCSID() when they are cleaned up. > > I think we are unlikely to use it. One problem is that it is also used > > in other BSDs, so it can't be used to hide messy ifdefs to control the > > visibility of the id string in a system-dependent way. > > Why not just add a switch in /etc/{defaults/,}make.conf to allow one > to control the visibility of RCSIDs? What concern is it of ours if the > other BSDs embed RCSIDs unconditionally? It would be silly to have a switch to fully control FreeBSD rcsids if OtherBSD rcsids get embedded (in object files) unconditionally. > In any event, __RCSID() doesn't appear ready for general use. An > updated version of my patch is available at the end of this message > and also at: http://testbed.q9media.net/freebsd/ed.20010701.patch Thanks. I like most of this version. > Index: ed/main.c > =================================================================== > RCS file: /home/ncvs/src/bin/ed/main.c,v > retrieving revision 1.20 > diff -u -r1.20 main.c > --- ed/main.c 2001/06/28 22:06:27 1.20 > +++ ed/main.c 2001/07/01 14:29:06 > @@ -27,18 +27,10 @@ > */ > > #ifndef lint > -static char * const copyright = > -"@(#) Copyright (c) 1993 Andrew Moore, Talke Studio. \n\ > - All rights reserved.\n"; > -#endif /* not lint */ > - > -#ifndef lint > -#if 0 > -static char * const rcsid = "@(#)main.c,v 1.1 1994/02/01 00:34:42 alm Exp"; > -#else > -static char * const rcsid = > +static const char copyright[] = > + "@(#) Copyright (c) 1993 Andrew Moore, Talke Studio. All rights reserved."; > +static const char rcsid[] = > "$FreeBSD: src/bin/ed/main.c,v 1.20 2001/06/28 22:06:27 dd Exp $"; > -#endif > #endif /* not lint */ > > /* Why change the original copyright string (source and oupput format)? The copyright normally goes in a separate "#ifdef lint". > ... > @@ -1385,12 +1377,13 @@ > { > char *hup = NULL; /* hup filename */ > char *s; > + char ed_hup[] = "ed.hup"; > int n; > > if (!sigactive) > quit(1); > sigflags &= ~(1 << (signo - 1)); > - if (addr_last && write_file("ed.hup", "w", 1, addr_last) < 0 && > + if (addr_last && write_file(ed_hup, "w", 1, addr_last) < 0 && > (s = getenv("HOME")) != NULL && > (n = strlen(s)) + 8 <= PATH_MAX && /* "ed.hup" + '/' */ > (hup = (char *) malloc(n + 10)) != NULL) { The correct fix is to declare write_file()'s first arg as const. BTW, I think we're only seeing the tip of the iceberg for constant poisoning of function args. -Wwrite-strings triggers a few warnings for "char *" args, but there are zillions of interfaces that take pointers to data that is not changed by the interface yet not declared const. Change a top-level interface to declare things as const and the poison will spread to lower levels. Bruce To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-audit" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0107020417590.33742-100000>