Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 19 Aug 2001 21:40:16 -0400
From:      David Hill <david@phobia.ms>
To:        audit@freebsd.org
Subject:   write.c patch - WARNS=2
Message-ID:  <20010819214016.298f8222.david@phobia.ms>

next in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]
Hello -

Here is a write.c patch.

1. Constified
2. Changed a strncpy to a strlcpy
3. Changed S_IWRITE >> 3 to S_IWGRP
4. Code cleaup (declaration and unused variable) when WARNS=2

- David


[-- Attachment #2 --]
diff -ru /usr/src/usr.bin/write.orig/Makefile /usr/src/usr.bin/write/Makefile
--- /usr/src/usr.bin/write.orig/Makefile	Fri Aug 10 22:54:16 2001
+++ /usr/src/usr.bin/write/Makefile	Fri Aug 10 22:54:45 2001
@@ -3,5 +3,6 @@
 PROG=	write
 BINMODE=2555
 BINGRP=	tty
+WARNS?= 2
 
 .include <bsd.prog.mk>
diff -ru /usr/src/usr.bin/write.orig/write.c /usr/src/usr.bin/write/write.c
--- /usr/src/usr.bin/write.orig/write.c	Fri Aug 10 22:54:16 2001
+++ /usr/src/usr.bin/write/write.c	Fri Aug 10 23:01:11 2001
@@ -64,12 +64,12 @@
 #include <utmp.h>
 
 void done __P((int));
-void do_write __P((char *, char *, uid_t));
+void do_write __P((const char *, const char *, uid_t));
 static void usage __P((void));
-int term_chk __P((char *, int *, time_t *, int));
+int term_chk __P((const char *, int *, time_t *, int));
 void wr_fputs __P((unsigned char *s));
-void search_utmp __P((char *, char *, char *, uid_t));
-int utmp_chk __P((char *, char *));
+void search_utmp __P((const char *, const char *, char *, uid_t));
+int utmp_chk __P((const char *, const char *));
 
 int
 main(argc, argv)
@@ -107,7 +107,7 @@
 	/* check args */
 	switch (argc) {
 	case 2:
-		search_utmp(argv[1], tty, mytty, myuid);
+		search_utmp(argv[1], mytty, tty, myuid);
 		do_write(tty, mytty, myuid);
 		break;
 	case 3:
@@ -141,7 +141,7 @@
  */
 int
 utmp_chk(user, tty)
-	char *user, *tty;
+	const char *user, *tty;
 {
 	struct utmp u;
 	int ufd;
@@ -172,8 +172,9 @@
  * writing from, unless that's the only terminal with messages enabled.
  */
 void
-search_utmp(user, tty, mytty, myuid)
-	char *user, *tty, *mytty;
+search_utmp(user, mytty, tty, myuid)
+	const char *user, *mytty;
+	char *tty;
 	uid_t myuid;
 {
 	struct utmp u;
@@ -190,8 +191,7 @@
 	while (read(ufd, (char *) &u, sizeof(u)) == sizeof(u))
 		if (strncmp(user, u.ut_name, sizeof(u.ut_name)) == 0) {
 			++nloggedttys;
-			(void)strncpy(atty, u.ut_line, UT_LINESIZE);
-			atty[UT_LINESIZE] = '\0';
+			(void)strlcpy(atty, u.ut_line, UT_LINESIZE);
 			if (term_chk(atty, &msgsok, &atime, 0))
 				continue;	/* bad term? skip */
 			if (myuid && !msgsok)
@@ -227,7 +227,7 @@
  */
 int
 term_chk(tty, msgsokP, atimeP, showerror)
-	char *tty;
+	const char *tty;
 	int *msgsokP, showerror;
 	time_t *atimeP;
 {
@@ -240,7 +240,7 @@
 			warn("%s", path);
 		return(1);
 	}
-	*msgsokP = (s.st_mode & (S_IWRITE >> 3)) != 0;	/* group write bit */
+	*msgsokP = (s.st_mode & S_IWGRP) != 0;	/* group write bit */
 	*atimeP = s.st_atime;
 	return(0);
 }
@@ -250,10 +250,11 @@
  */
 void
 do_write(tty, mytty, myuid)
-	char *tty, *mytty;
+	const char *tty, *mytty;
 	uid_t myuid;
 {
-	register char *login, *nows;
+	register char const *login;
+	register char *nows;
 	register struct passwd *pwd;
 	time_t now;
 	char path[MAXPATHLEN], host[MAXHOSTNAMELEN], line[512];
@@ -293,6 +294,7 @@
 done(n)
 int n;  /* signal number */
 {
+	n = 0;
 	(void)printf("EOF\r\n");
 	exit(0);
 }

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010819214016.298f8222.david>