Skip site navigation (1)Skip section navigation (2)
Date:      Sat,  5 Jul 2003 12:38:16 +0200 (CEST)
From:      Stefan Farfeleder <stefan@fafoe.narf.at>
To:        FreeBSD-gnats-submit@FreeBSD.org
Cc:        stefan@fafoe.narf.at
Subject:   bin/54123: [patch] fix assignments of getopt() return values to char variables
Message-ID:  <20030705103816.26D3B521@frog.fafoe.narf.at>
Resent-Message-ID: <200307051040.h65AeIQj073447@freefall.freebsd.org>

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

>Number:         54123
>Category:       bin
>Synopsis:       [patch] fix assignments of getopt() return values to char variables
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sat Jul 05 03:40:17 PDT 2003
>Closed-Date:
>Last-Modified:
>Originator:     Stefan Farfeleder
>Release:        FreeBSD 5.1-CURRENT i386
>Organization:
>Environment:
System: FreeBSD frog.fafoe.narf.at 5.1-CURRENT FreeBSD 5.1-CURRENT #19: Fri Jul 4 14:44:41 CEST 2003 freebsd@frog.fafoe.narf.at:/freebsd/frog/obj/freebsd/frog/src/sys/FROG i386


	
>Description:
The diff in the Fix section changes all occurrences of

char ch; ch = getopt()

I found in the tree into

int ch; ch = getopt().

On architectures like the PowerPC with an unsigned char as plain char the -1
return value from getopt() will be wrapped to UCHAR_MAX otherwise and the
comparison with -1 will always fail.
	
>How-To-Repeat:
	
>Fix:

	

--- getopt.diff begins here ---
Index: src/usr.sbin/edquota/edquota.c
===================================================================
RCS file: /usr/home/ncvs/src/usr.sbin/edquota/edquota.c,v
retrieving revision 1.20
diff -u -r1.20 edquota.c
--- src/usr.sbin/edquota/edquota.c	3 May 2003 21:06:36 -0000	1.20
+++ src/usr.sbin/edquota/edquota.c	4 Jul 2003 16:32:01 -0000
@@ -107,8 +107,8 @@
 	int i, quotatype, range, tmpfd;
 	uid_t startuid, enduid;
 	u_int32_t *limp;
-	char *protoname, *cp, *oldoptarg, ch;
-	int eflag = 0, tflag = 0, pflag = 0;
+	char *protoname, *cp, *oldoptarg;
+	int eflag = 0, tflag = 0, pflag = 0, ch;
 	char *fspath = NULL;
 	char buf[30];
 
Index: src/usr.sbin/getfmac/getfmac.c
===================================================================
RCS file: /usr/home/ncvs/src/usr.sbin/getfmac/getfmac.c,v
retrieving revision 1.1
diff -u -r1.1 getfmac.c
--- src/usr.sbin/getfmac/getfmac.c	23 Oct 2002 03:15:23 -0000	1.1
+++ src/usr.sbin/getfmac/getfmac.c	4 Jul 2003 16:36:15 -0000
@@ -58,9 +58,9 @@
 int
 main(int argc, char *argv[])
 {
-	char ch, *labellist, *string;
+	char *labellist, *string;
 	mac_t label;
-	int hflag;
+	int ch, hflag;
 	int error, i;
 
 	labellist = NULL;
Index: src/usr.sbin/getpmac/getpmac.c
===================================================================
RCS file: /usr/home/ncvs/src/usr.sbin/getpmac/getpmac.c,v
retrieving revision 1.1
diff -u -r1.1 getpmac.c
--- src/usr.sbin/getpmac/getpmac.c	23 Oct 2002 03:15:23 -0000	1.1
+++ src/usr.sbin/getpmac/getpmac.c	4 Jul 2003 16:43:00 -0000
@@ -57,10 +57,10 @@
 int
 main(int argc, char *argv[])
 {
-	char ch, *labellist, *string;
+	char *labellist, *string;
 	mac_t label;
 	pid_t pid;
-	int error, pid_set;
+	int ch, error, pid_set;
 
 	pid_set = 0;
 	pid = 0;
Index: src/usr.sbin/mixer/mixer.c
===================================================================
RCS file: /usr/home/ncvs/src/usr.sbin/mixer/mixer.c,v
retrieving revision 1.20
diff -u -r1.20 mixer.c
--- src/usr.sbin/mixer/mixer.c	15 Jun 2003 08:46:04 -0000	1.20
+++ src/usr.sbin/mixer/mixer.c	4 Jul 2003 16:46:36 -0000
@@ -93,7 +93,7 @@
 	int l = 0, r = 0, t = 0;
 	char lstr[5], rstr[5];
 	int n = 0, lrel = 0, rrel = 0;
-	char ch;
+	int ch;
 
 	char *name;
 
Index: src/usr.sbin/quotaon/quotaon.c
===================================================================
RCS file: /usr/home/ncvs/src/usr.sbin/quotaon/quotaon.c,v
retrieving revision 1.8
diff -u -r1.8 quotaon.c
--- src/usr.sbin/quotaon/quotaon.c	3 May 2003 21:06:39 -0000	1.8
+++ src/usr.sbin/quotaon/quotaon.c	4 Jul 2003 16:52:07 -0000
@@ -80,9 +80,9 @@
 main(int argc, char **argv)
 {
 	register struct fstab *fs;
-	char ch, *qfnp, *whoami;
+	char *qfnp, *whoami;
 	long argnum, done = 0;
-	int i, offmode = 0, errs = 0;
+	int ch, i, offmode = 0, errs = 0;
 
 	whoami = rindex(*argv, '/') + 1;
 	if (whoami == (char *)1)
Index: src/usr.sbin/repquota/repquota.c
===================================================================
RCS file: /usr/home/ncvs/src/usr.sbin/repquota/repquota.c,v
retrieving revision 1.15
diff -u -r1.15 repquota.c
--- src/usr.sbin/repquota/repquota.c	3 May 2003 21:06:39 -0000	1.15
+++ src/usr.sbin/repquota/repquota.c	4 Jul 2003 16:52:22 -0000
@@ -111,7 +111,8 @@
 	register struct group *gr;
 	int gflag = 0, uflag = 0, errs = 0;
 	long i, argnum, done = 0;
-	char ch, *qfnp;
+	char *qfnp;
+	int ch;
 
 	while ((ch = getopt(argc, argv, "aguv")) != -1) {
 		switch(ch) {
Index: src/usr.sbin/sa/main.c
===================================================================
RCS file: /usr/home/ncvs/src/usr.sbin/sa/main.c,v
retrieving revision 1.13
diff -u -r1.13 main.c
--- src/usr.sbin/sa/main.c	3 May 2003 21:06:40 -0000	1.13
+++ src/usr.sbin/sa/main.c	4 Jul 2003 16:52:39 -0000
@@ -81,7 +81,7 @@
 int
 main(int argc, char **argv)
 {
-	char ch;
+	int ch;
 	char pathacct[] = _PATH_ACCT;
 	int error = 0;
 
Index: src/usr.sbin/watch/watch.c
===================================================================
RCS file: /usr/home/ncvs/src/usr.sbin/watch/watch.c,v
retrieving revision 1.28
diff -u -r1.28 watch.c
--- src/usr.sbin/watch/watch.c	3 May 2003 21:06:41 -0000	1.28
+++ src/usr.sbin/watch/watch.c	4 Jul 2003 16:53:09 -0000
@@ -283,9 +283,9 @@
 int
 main(int ac, char *av[])
 {
-	int             res, rv, nread;
+	int             ch, res, rv, nread;
 	size_t		b_size = MIN_SIZE;
-	char            ch, *buf, chb[READB_LEN];
+	char            *buf, chb[READB_LEN];
 	fd_set          fd_s;
 
 	(void) setlocale(LC_TIME, "");
Index: src/usr.bin/locale/locale.c
===================================================================
RCS file: /usr/home/ncvs/src/usr.bin/locale/locale.c,v
retrieving revision 1.10
diff -u -r1.10 locale.c
--- src/usr.bin/locale/locale.c	26 Jun 2003 11:05:56 -0000	1.10
+++ src/usr.bin/locale/locale.c	4 Jul 2003 16:17:54 -0000
@@ -211,7 +211,7 @@
 int
 main(int argc, char *argv[])
 {
-	char	ch;
+	int	ch;
 	int	tmp;
 
 	while ((ch = getopt(argc, argv, "ackm")) != -1) {
Index: src/usr.bin/quota/quota.c
===================================================================
RCS file: /usr/home/ncvs/src/usr.bin/quota/quota.c,v
retrieving revision 1.20
diff -u -r1.20 quota.c
--- src/usr.bin/quota/quota.c	15 Jun 2003 06:54:36 -0000	1.20
+++ src/usr.bin/quota/quota.c	4 Jul 2003 16:54:48 -0000
@@ -115,7 +115,7 @@
 	int ngroups; 
 	gid_t mygid, gidset[NGROUPS];
 	int i, gflag = 0, uflag = 0;
-	char ch;
+	int ch;
 
 	while ((ch = getopt(argc, argv, "glquv")) != -1) {
 		switch(ch) {
Index: src/usr.bin/showmount/showmount.c
===================================================================
RCS file: /usr/home/ncvs/src/usr.bin/showmount/showmount.c,v
retrieving revision 1.13
diff -u -r1.13 showmount.c
--- src/usr.bin/showmount/showmount.c	12 Oct 2002 05:45:01 -0000	1.13
+++ src/usr.bin/showmount/showmount.c	4 Jul 2003 16:55:20 -0000
@@ -117,7 +117,7 @@
 	register struct exportslist *exp;
 	register struct grouplist *grp;
 	register int rpcs = 0, mntvers = 1;
-	char ch;
+	int ch;
 	const char *host;
 	int estat;
 
Index: src/usr.bin/uuencode/uuencode.c
===================================================================
RCS file: /usr/home/ncvs/src/usr.bin/uuencode/uuencode.c,v
retrieving revision 1.17
diff -u -r1.17 uuencode.c
--- src/usr.bin/uuencode/uuencode.c	3 May 2003 19:44:46 -0000	1.17
+++ src/usr.bin/uuencode/uuencode.c	4 Jul 2003 16:25:47 -0000
@@ -77,7 +77,7 @@
 {
 	struct stat sb;
 	int base64;
-	char ch;
+	int ch;
 	char *outfile;
 
 	base64 = 0;
Index: src/sbin/devfs/devfs.c
===================================================================
RCS file: /usr/home/ncvs/src/sbin/devfs/devfs.c,v
retrieving revision 1.4
diff -u -r1.4 devfs.c
--- src/sbin/devfs/devfs.c	29 Jul 2002 17:09:21 -0000	1.4
+++ src/sbin/devfs/devfs.c	4 Jul 2003 15:42:29 -0000
@@ -59,7 +59,7 @@
 {
 	const char *mountpt;
 	struct cmd *c;
-	char ch;
+	int ch;
 
 	mountpt = NULL;
 	while ((ch = getopt(ac, av, "m:")) != -1)
Index: src/sbin/devfs/rule.c
===================================================================
RCS file: /usr/home/ncvs/src/sbin/devfs/rule.c,v
retrieving revision 1.4
diff -u -r1.4 rule.c
--- src/sbin/devfs/rule.c	28 Jul 2002 06:59:40 -0000	1.4
+++ src/sbin/devfs/rule.c	4 Jul 2003 15:47:43 -0000
@@ -82,7 +82,7 @@
 rule_main(int ac, char **av)
 {
 	struct cmd *c;
-	char ch;
+	int ch;
 
 	setprogname("devfs rule");
 	optreset = optind = 1;
Index: src/sbin/ffsinfo/ffsinfo.c
===================================================================
RCS file: /usr/home/ncvs/src/sbin/ffsinfo/ffsinfo.c,v
retrieving revision 1.5
diff -u -r1.5 ffsinfo.c
--- src/sbin/ffsinfo/ffsinfo.c	21 Aug 2002 18:10:14 -0000	1.5
+++ src/sbin/ffsinfo/ffsinfo.c	4 Jul 2003 16:57:03 -0000
@@ -141,7 +141,7 @@
 {
 	DBG_FUNC("main")
 	char	*device, *special, *cp;
-	char	ch;
+	int	ch;
 	size_t	len;
 	struct stat	st;
 	struct disklabel	*lp;
Index: src/sbin/growfs/growfs.c
===================================================================
RCS file: /usr/home/ncvs/src/sbin/growfs/growfs.c,v
retrieving revision 1.15
diff -u -r1.15 growfs.c
--- src/sbin/growfs/growfs.c	12 May 2003 05:37:16 -0000	1.15
+++ src/sbin/growfs/growfs.c	4 Jul 2003 16:57:12 -0000
@@ -1933,7 +1933,7 @@
 {
 	DBG_FUNC("main")
 	char	*device, *special, *cp;
-	char	ch;
+	int	ch;
 	unsigned int	size=0;
 	size_t	len;
 	unsigned int	Nflag=0;
Index: src/sbin/mdmfs/mdmfs.c
===================================================================
RCS file: /usr/home/ncvs/src/sbin/mdmfs/mdmfs.c,v
retrieving revision 1.13
diff -u -r1.13 mdmfs.c
--- src/sbin/mdmfs/mdmfs.c	3 May 2003 18:41:58 -0000	1.13
+++ src/sbin/mdmfs/mdmfs.c	4 Jul 2003 16:03:29 -0000
@@ -93,7 +93,8 @@
 	bool have_mdtype;
 	bool detach, softdep, autounit;
 	char *mtpoint, *unitstr;
-	char ch, *p;
+	int ch;
+	char *p;
 
 	/* Misc. initialization. */
 	(void)memset(&mi, '\0', sizeof(mi));
Index: src/sbin/quotacheck/quotacheck.c
===================================================================
RCS file: /usr/home/ncvs/src/sbin/quotacheck/quotacheck.c,v
retrieving revision 1.21
diff -u -r1.21 quotacheck.c
--- src/sbin/quotacheck/quotacheck.c	3 May 2003 18:41:59 -0000	1.21
+++ src/sbin/quotacheck/quotacheck.c	4 Jul 2003 16:12:16 -0000
@@ -152,7 +152,8 @@
 	struct quotaname *auxdata;
 	int i, argnum, maxrun, errs;
 	long done = 0;
-	char ch, *name;
+	int ch;
+	char *name;
 
 	errs = maxrun = 0;
 	while ((ch = getopt(argc, argv, "aguvl:")) != -1) {
--- getopt.diff ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:



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