Bug 193471

Summary: Mismatched variable type in md5(1) from getopt
Product: Base System Reporter: Sprow <webpages>
Component: binAssignee: Xin LI <delphij>
Status: Closed FIXED    
Severity: Affects Only Me CC: delphij
Priority: ---    
Version: 10.0-STABLE   
Hardware: Any   
OS: Any   

Description Sprow 2014-09-08 21:51:48 UTC
The optarg from getopt(3) is defined as a char *, but md5 variable 'checkAgainst' is an unsigned type which leads to a warning on assignment and later calls to strcmp (et al) when using a strict type check compiler.

Also, the variables may as well be static scope, as per the following patch against SVN revision 238964 of /sbin/md5/md5.c

--- md5-238964.c	2014-09-08 22:45:27.0 +0100
+++ md5-new.c	2014-09-08 22:45:27.0 +0100
@@ -42,11 +42,11 @@
 #define TEST_BLOCK_COUNT 100000
 #define MDTESTCOUNT 8
-int qflag;
-int rflag;
-int sflag;
-unsigned char* checkAgainst;
-int	checksFailed;
+static int qflag;
+static int rflag;
+static int sflag;
+static char* checkAgainst;
+static int checksFailed;
 typedef void (DIGEST_Init)(void *);
 typedef void (DIGEST_Update)(void *, const unsigned char *, size_t);
Comment 1 Xin LI freebsd_committer 2015-03-26 22:34:58 UTC
Committed, thanks!
Comment 2 commit-hook freebsd_committer 2015-03-26 22:35:25 UTC
A commit references this bug:

Author: delphij
Date: Thu Mar 26 22:34:28 UTC 2015
New revision: 280716
URL: https://svnweb.freebsd.org/changeset/base/280716

   - Correct type for checkAgainst.
   - Staticify flags that are not used outside the file scope.

  PR:		bin/193471
  Submitted by:	Robert Sprowson <webpages sprow.co.uk>
  MFC after:	2 weeks