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);
Committed, thanks!
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 Log: - 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 Changes: head/sbin/md5/md5.c