misc/172566: Fix analyzer warnings in /games

Erik Cederstrand erik at cederstrand.dk
Wed Oct 10 11:00:01 UTC 2012


>Number:         172566
>Category:       misc
>Synopsis:       Fix analyzer warnings in /games
>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:   Wed Oct 10 11:00:00 UTC 2012
>Closed-Date:
>Last-Modified:
>Originator:     Erik Cederstrand
>Release:        CURRENT
>Organization:
>Environment:
>Description:
Fix 4 warnings in /games reported by Clang Static Analyzer: 

bcd and caesar are not installed SETGID (at least on my system). Remove the call to setgid() as it becomes redundant.

In fortune, make sure a tail file is passed in the args if mandated in the logic. Bail if not.

In random(6), fix a memory leak in randomize_fd()
>How-To-Repeat:

>Fix:
Se attached patch

Patch attached with submission follows:

Index: head/games/random/randomize_fd.c
===================================================================
--- head/games/random/randomize_fd.c	(revision 241370)
+++ head/games/random/randomize_fd.c	(working copy)
@@ -207,6 +207,7 @@
 		goto make_token;
 	}
 
+	free(buf);
 	for (i = numnode; i > 0; i--) {
 		selected = random() % numnode;
 
Index: head/games/fortune/fortune/fortune.c
===================================================================
--- head/games/fortune/fortune/fortune.c	(revision 241370)
+++ head/games/fortune/fortune/fortune.c	(working copy)
@@ -576,6 +576,10 @@
 	if (*head == NULL)
 		*head = *tail = fp;
 	else if (fp->percent == NO_PROB) {
+		if (*tail == NULL) {
+			fprintf(stderr, "No tail file given\n");
+			exit(1);
+		}
 		(*tail)->next = fp;
 		fp->prev = *tail;
 		*tail = fp;
Index: head/games/bcd/bcd.c
===================================================================
--- head/games/bcd/bcd.c	(revision 241370)
+++ head/games/bcd/bcd.c	(working copy)
@@ -129,9 +129,6 @@
 {
 	char cardline[80];
 
-	/* revoke setgid privileges */
-	setgid(getgid());
-
 	/*
 	 * The original bcd prompts with a "%" when reading from stdin,
 	 * but this seems kind of silly.  So this one doesn't.
Index: head/games/caesar/caesar.c
===================================================================
--- head/games/caesar/caesar.c	(revision 241370)
+++ head/games/caesar/caesar.c	(working copy)
@@ -82,9 +82,6 @@
 	char *inbuf;
 	int obs[26], try, winner;
 
-	/* revoke setgid privileges */
-	setgid(getgid());
-
 	if (argc > 1)
 		printit(argv[1]);

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


More information about the freebsd-bugs mailing list