]> granicus.if.org Git - neomutt/commitdiff
Bring consistency among sizes
authorJustin Vasel <justin.vasel@gmail.com>
Wed, 29 Nov 2017 18:00:44 +0000 (13:00 -0500)
committerRichard Russon <rich@flatcap.org>
Wed, 13 Dec 2017 15:21:30 +0000 (15:21 +0000)
There are instances in the code that refer to lengths or sizes of strings and
buffers and the like, but they are not typed in a consistent manner. The purpose
of this commit is to provide some consistency to these scenarios by changing
their type from unsigned int, int, unsigned long, etc. to size_t.

In general, these situations were identified by globally searching the code
for patterns along the lines of:
(unsigned|unsigned int|int|long) (len|blen|olen|length|l|size)
and changing the type to size_t on a case-by-case basis.

The following situations were explicitly ignored:

- autosetup/jimsh0.c, because it appears to be third-party code

- inputs to function calls relating to ssl and sasl, because they don't take
size_t as inputs and recasting in the function call didn't seem worth the
increased messiness

- for loop indices, because in some cases unsigned indices can breed bugs

This commit takes care of most obvious cases. There may certainly be subtler
ones that were missed in this pass.

Resolves: #928

33 files changed:
address.c
attach.c
browser.c
browser.h
conn/ssl.c
copy.c
curs_lib.c
curs_main.c
handler.c
hdrline.c
imap/auth_cram.c
imap/imap_private.h
imap/message.c
init.c
keymap.c
mutt_charset.c
mutt_curses.h
muttlib.c
ncrypt/crypt.c
ncrypt/crypt_gpgme.c
ncrypt/pgp.c
ncrypt/smime.c
newsrc.c
nntp.c
pager.c
parse.c
pgppubring.c
pop.c
protos.h
sendlib.c
sidebar.c
url.c
version.c

index 1acb7c519984d18b0dd209828f4184039d66bd55..74f1d12186945179331fa930ff6df4c863a0812e 100644 (file)
--- a/address.c
+++ b/address.c
@@ -834,7 +834,7 @@ bool mutt_addr_valid_msgid(const char *msgid)
    * domain-literal = "[" *(dtext / quoted-pair) "]"
    */
 
-  unsigned int l;
+  size_t l;
 
   if (!msgid || !*msgid)
     return false;
index 97ab4b77f4309ce56f779f3e3373f7fb82be52a3..87d1a7e0d63224e4007aaf781ff3b9b36be780c6 100644 (file)
--- a/attach.c
+++ b/attach.c
@@ -307,7 +307,7 @@ bailout:
  * @param type Buffer with mime type of attachment in "type/subtype" format
  * @param len  Buffer length
  */
-void mutt_check_lookup_list(struct Body *b, char *type, int len)
+void mutt_check_lookup_list(struct Body *b, char *type, size_t len)
 {
   int i;
 
index e261086d75c91fcc87fcb49fc1ccd9a8cd5cce64..a76cc95ddd135bc84ec058fcd795d4371d10eebf 100644 (file)
--- a/browser.c
+++ b/browser.c
@@ -1696,7 +1696,7 @@ void mutt_select_file(char *f, size_t flen, int flags, char ***files, int *numfi
 #endif
         {
           /* add '/' at the end of the directory name if not already there */
-          int len = mutt_str_strlen(buf);
+          size_t len = mutt_str_strlen(buf);
           if ((len > 0) && (buf[len - 1] != '/') && (sizeof(buf) > (len + 1)))
           {
             buf[len] = '/';
index d84af292f1b1535bbc1226760e2c04cdd92dbab4..ca7925163eb597266d0e55905b7cc5e569fda193 100644 (file)
--- a/browser.h
+++ b/browser.h
@@ -67,7 +67,7 @@ struct FolderFile
 struct BrowserState
 {
   struct FolderFile *entry;
-  unsigned int entrylen; /**< number of real entries */
+  size_t entrylen; /**< number of real entries */
   unsigned int entrymax; /**< max entry */
 #ifdef USE_IMAP
   bool imap_browse;
index d10d055e75237db298433b84c5608038ec103d78..26e1387bffb19d143c3f22a01a3ec20e5858cb5d 100644 (file)
@@ -947,7 +947,7 @@ static int ssl_cache_trusted_cert(X509 *c)
  * @retval true  User selected 'skip'
  * @retval false Otherwise
  */
-static int interactive_check_cert(X509 *cert, int idx, int len, SSL *ssl, int allow_always)
+static int interactive_check_cert(X509 *cert, int idx, size_t len, SSL *ssl, int allow_always)
 {
   static const int part[] = {
     NID_commonName,             /* CN */
@@ -1121,7 +1121,8 @@ static int ssl_verify_callback(int preverify_ok, X509_STORE_CTX *ctx)
 {
   char buf[STRING];
   const char *host = NULL;
-  int len, pos;
+  size_t len;
+  int pos;
   X509 *cert = NULL;
   SSL *ssl = NULL;
   int skip_mode;
diff --git a/copy.c b/copy.c
index e0b473c93fc348b639d4ad0bb21b969a1c07b8f6..5969b887c0592166a2cf10aaf1d11c1a9de16fd5 100644 (file)
--- a/copy.c
+++ b/copy.c
@@ -278,7 +278,7 @@ int mutt_copy_hdr(FILE *in, FILE *out, LOFF_T off_start, LOFF_T off_end,
       }
       else
       {
-        int blen = mutt_str_strlen(buf);
+        size_t blen = mutt_str_strlen(buf);
 
         mutt_mem_realloc(&this_one, this_one_len + blen + sizeof(char));
         strcat(this_one + this_one_len, buf);
@@ -898,7 +898,7 @@ static void format_address_header(char **h, struct Address *a)
   char cbuf[STRING];
   char c2buf[STRING];
   char *p = NULL;
-  int l, linelen, buflen, cbuflen, c2buflen, plen;
+  size_t l, linelen, buflen, cbuflen, c2buflen, plen;
 
   linelen = mutt_str_strlen(*h);
   plen = linelen;
@@ -954,7 +954,7 @@ static void format_address_header(char **h, struct Address *a)
 static int address_header_decode(char **h)
 {
   char *s = *h;
-  int l;
+  size_t l;
   bool rp = false;
 
   struct Address *a = NULL;
index 19b0aa75ff1cb3b9ae89f74377876405b006617c..773fd80ebe69a7e905a532a435ea62db7a4e82e5 100644 (file)
@@ -449,7 +449,7 @@ void mutt_curses_message(const char *fmt, ...)
 }
 
 void mutt_progress_init(struct Progress *progress, const char *msg,
-                        unsigned short flags, unsigned short inc, long size)
+                        unsigned short flags, unsigned short inc, size_t size)
 {
   struct timeval tv = { 0, 0 };
 
index 05930b5bbd445813cb7591f0db794c82ad7785d1..4654f9c02f0d5f62317be5df5adf17753d277e69 100644 (file)
@@ -704,7 +704,7 @@ void mutt_draw_statusline(int cols, const char *buf, int buflen)
   int offset = 0;
   bool found = false;
   int chunks = 0;
-  int len = 0;
+  size_t len = 0;
 
   struct Syntax
   {
index d11485c2473e3bd327d3abef2aaa89e4c08a92a6..f93c2dc0155db08607877d7b8d95a0aa5f32220b 100644 (file)
--- a/handler.c
+++ b/handler.c
@@ -303,7 +303,7 @@ static void decode_quoted(struct State *s, long len, int istext, iconv_t cd)
   state_reset_prefix(s);
 }
 
-void mutt_decode_base64(struct State *s, long len, int istext, iconv_t cd)
+void mutt_decode_base64(struct State *s, size_t len, int istext, iconv_t cd)
 {
   char buf[5];
   int c1, c2, c3, c4, ch, i;
index e968214160ae38fa3c451d4581d730ee8474f71f..49fa35ffaba6b73c1715eb9dcb135ef54f2004dd 100644 (file)
--- a/hdrline.c
+++ b/hdrline.c
@@ -158,7 +158,7 @@ static bool first_mailing_list(char *buf, size_t buflen, struct Address *a)
  */
 static size_t add_index_color(char *buf, size_t buflen, enum FormatFlag flags, char color)
 {
-  int len;
+  size_t len;
 
   /* only add color markers if we are operating on main index entries. */
   if (!(flags & MUTT_FORMAT_INDEX))
index d159ee78272b19d646b9a0b3d4cbe548ca88d9c0..86f6bbcae369c576f5218e14edc77872b9f0bd18 100644 (file)
@@ -58,7 +58,7 @@ static void hmac_md5(const char *password, char *challenge, unsigned char *respo
   unsigned char ipad[MD5_BLOCK_LEN], opad[MD5_BLOCK_LEN];
   unsigned char secret[MD5_BLOCK_LEN + 1];
   unsigned char hash_passwd[MD5_DIGEST_LEN];
-  unsigned int secret_len, chal_len;
+  size_t secret_len, chal_len;
 
   secret_len = strlen(password);
   chal_len = strlen(challenge);
index 508d00115a05de733662e20e7aa2ff6df803befc..cc565cd89805d6ff4fca64bd1d60a0ad02a76232 100644 (file)
@@ -222,7 +222,7 @@ struct ImapData
   unsigned int seqno;
   time_t lastread; /**< last time we read a command for the server */
   char *buf;
-  unsigned int blen;
+  size_t blen;
 
   /* If nonzero, we can send UTF-8, and the server will use UTF8 rather
    * than mUTF7 */
@@ -255,7 +255,7 @@ struct ImapData
   unsigned int uid_validity;
   unsigned int uidnext;
   struct Header **msn_index;   /**< look up headers by (MSN-1) */
-  unsigned int msn_index_size; /**< allocation size */
+  size_t msn_index_size;       /**< allocation size */
   unsigned int max_msn;        /**< the largest MSN fetched so far */
   struct BodyCache *bcache;
 
index 4a87e46dcd7bab4d710b839e7ffbc1b8697326b4..eba1dce51809d79bc275d4f7b1d954a25edd046f 100644 (file)
@@ -471,7 +471,7 @@ static void flush_buffer(char *buf, size_t *len, struct Connection *conn)
  *
  * Mapping from Message Sequence Number to Header
  */
-static void alloc_msn_index(struct ImapData *idata, unsigned int msn_count)
+static void alloc_msn_index(struct ImapData *idata, size_t msn_count)
 {
   unsigned int new_size;
 
diff --git a/init.c b/init.c
index 612954ebdd01fe9ed20caea929591bf54610d6f8..98504998ebbea6a26964ff95cf6cdfcb023b8d59 100644 (file)
--- a/init.c
+++ b/init.c
@@ -1580,7 +1580,7 @@ static int parse_attach_list(struct Buffer *buf, struct Buffer *s,
   struct AttachMatch *a = NULL;
   char *p = NULL;
   char *tmpminor = NULL;
-  int len;
+  size_t len;
   int ret;
 
   do
@@ -3399,7 +3399,7 @@ static void matches_ensure_morespace(int current)
  *
  * Changes the dest buffer if necessary/possible to aid completion.
 */
-static void candidate(char *dest, char *try, const char *src, int len)
+static void candidate(char *dest, char *try, const char *src, size_t len)
 {
   if (!dest || !try || !src)
     return;
index 40591c55af6d0d843d29cf42904cd4cbd4c08168..3ff760853bd5384dcbae2355f2ba60175d8837f7 100644 (file)
--- a/keymap.c
+++ b/keymap.c
@@ -130,7 +130,7 @@ int LastKey;
 
 struct Keymap *Keymaps[MENU_MAX];
 
-static struct Keymap *alloc_keys(int len, keycode_t *keys)
+static struct Keymap *alloc_keys(size_t len, keycode_t *keys)
 {
   struct Keymap *p = NULL;
 
@@ -245,7 +245,8 @@ int km_bind_err(char *s, int menu, int op, char *macro, char *descr, struct Buff
   int retval = 0;
   struct Keymap *map = NULL, *tmp = NULL, *last = NULL, *next = NULL;
   keycode_t buf[MAX_SEQ];
-  int len, pos = 0, lastpos = 0;
+  size_t len;
+  int pos = 0, lastpos = 0;
 
   len = parsekeys(s, buf, MAX_SEQ);
 
index 7b9bb5772ee2ec3a3a838a7a5dab1ff3065fe0b9..f783a6366908abe8c05fbc876f6e38aa4bbc4a2a 100644 (file)
@@ -97,7 +97,7 @@ int mutt_convert_string(char **ps, const char *from, const char *to, int flags)
 
   if (to && from && (cd = mutt_iconv_open(to, from, flags)) != (iconv_t) -1)
   {
-    int len;
+    size_t len;
     const char *ib = NULL;
     char *buf = NULL, *ob = NULL;
     size_t ibl, obl;
index 0f4f068e2990c88b70270b4323a9ca5762f43ce2..83cc779b6438dd7b3c334221212df2cc2e557fae 100644 (file)
@@ -213,13 +213,13 @@ struct Progress
   unsigned short flags;
   const char *msg;
   long pos;
-  long size;
+  size_t size;
   unsigned int timestamp;
   char sizestr[SHORT_STRING];
 };
 
 void mutt_progress_init(struct Progress *progress, const char *msg,
-                        unsigned short flags, unsigned short inc, long size);
+                        unsigned short flags, unsigned short inc, size_t size);
 /* If percent is positive, it is displayed as percentage, otherwise
  * percentage is calculated from progress->size and pos if progress
  * was initialized with positive size, otherwise no percentage is shown */
index a7e3f79fd84fa0f27f0b4e3ff8c2f53c0c01ab7b..70ece002a7cca0a8640ea909288e1893abcff580 100644 (file)
--- a/muttlib.c
+++ b/muttlib.c
@@ -1409,7 +1409,7 @@ FILE *mutt_open_read(const char *path, pid_t *thepid)
   FILE *f = NULL;
   struct stat s;
 
-  int len = mutt_str_strlen(path);
+  size_t len = mutt_str_strlen(path);
 
   if (path[len - 1] == '|')
   {
index 8d366147d6f80a454347615d587976f112c60c67..fd134f8aa150d7353cf64d93a32cadbe4bbd7539 100644 (file)
@@ -489,7 +489,7 @@ int mutt_is_application_pgp(struct Body *m)
 int mutt_is_application_smime(struct Body *m)
 {
   char *t = NULL;
-  int len;
+  size_t len;
   bool complain = false;
 
   if (!m)
index bf7933032c8f13603381f61b38d587a1d92d4482..d1cb04d58fa75dbf0d94ec66e618a743b400a689 100644 (file)
@@ -584,7 +584,7 @@ static gpgme_data_t body_to_data_object(struct Body *a, int convert)
  * Create a GPGME data object from the stream FP but limit the object
  * to LENGTH bytes starting at OFFSET bytes from the beginning of the file.
  */
-static gpgme_data_t file_to_data_object(FILE *fp, long offset, long length)
+static gpgme_data_t file_to_data_object(FILE *fp, long offset, size_t length)
 {
   int err = 0;
   gpgme_data_t data;
@@ -2168,7 +2168,7 @@ static int pgp_gpgme_extract_keys(gpgme_data_t keydata, FILE **fp, int dryrun)
   gpgme_user_id_t uid;
   gpgme_subkey_t subkey;
   const char *shortid = NULL;
-  int len;
+  size_t len;
   char date[STRING];
   int more;
   int rc = -1;
index 08b874241c4db13491ca35383e9d1720f25bd3b6..609c23ea44e08ee259aa9d65a374468f284072d0 100644 (file)
@@ -830,7 +830,7 @@ static struct Body *pgp_decrypt_part(struct Body *a, struct State *s,
   FILE *pgpin = NULL, *pgpout = NULL, *pgperr = NULL, *pgptmp = NULL;
   struct stat info;
   struct Body *tattach = NULL;
-  int len;
+  size_t len;
   char pgperrfile[_POSIX_PATH_MAX];
   char pgptmpfile[_POSIX_PATH_MAX];
   pid_t thepid;
index 6dd652429081cb4565eac30ad5b31907f1345f1e..014acb7dc74d4123ce76e47bee9a67b8c5df4bc9 100644 (file)
@@ -1748,7 +1748,7 @@ int smime_verify_one(struct Body *sigbdy, struct State *s, const char *tempfile)
  */
 static struct Body *smime_handle_entity(struct Body *m, struct State *s, FILE *out_file)
 {
-  int len = 0;
+  size_t len = 0;
   int c;
   char buf[HUGE_STRING];
   char outfile[_POSIX_PATH_MAX], errfile[_POSIX_PATH_MAX];
index bbcad45355fd95513325357e7986c9bad3ca9c46..ae162cb315759cca23ed857076e95780956b9786 100644 (file)
--- a/newsrc.c
+++ b/newsrc.c
@@ -64,7 +64,7 @@ static struct NntpData *nntp_data_find(struct NntpServer *nserv, const char *gro
 
   if (!nntp_data)
   {
-    int len = strlen(group) + 1;
+    size_t len = strlen(group) + 1;
     /* create NntpData structure and add it to hash */
     nntp_data = mutt_mem_calloc(1, sizeof(struct NntpData) + len);
     nntp_data->group = (char *) nntp_data + sizeof(struct NntpData);
diff --git a/nntp.c b/nntp.c
index 5f84ad53d5ed625ee594a02b5ae3a15975294e5c..fa5add0770265ce0544cd0fd8ee45e28c3ede8de 100644 (file)
--- a/nntp.c
+++ b/nntp.c
@@ -298,7 +298,7 @@ static int nntp_attempt_features(struct NntpServer *nserv)
             off = colon + 1 - nserv->overview_fmt;
           if (strcasecmp(nserv->overview_fmt + b, "Bytes:") == 0)
           {
-            int len = strlen(nserv->overview_fmt + b);
+            size_t len = strlen(nserv->overview_fmt + b);
             mutt_str_strfcpy(nserv->overview_fmt + b, "Content-Length:", len + 1);
             off = b + len;
           }
diff --git a/pager.c b/pager.c
index fa211a047686d8376f3376fd11aa84a26ef75619..b751723472b6066cab409fa14add69ca871dc9c6 100644 (file)
--- a/pager.c
+++ b/pager.c
@@ -120,7 +120,7 @@ static struct Header *OldHdr = NULL;
  */
 struct QClass
 {
-  int length;
+  size_t length;
   int index;
   int color;
   char *prefix;
@@ -433,7 +433,7 @@ static void cleanup_quote(struct QClass **quote_list)
 }
 
 static struct QClass *classify_quote(struct QClass **quote_list, const char *qptr,
-                                     int length, int *force_redraw, int *q_level)
+                                     size_t length, int *force_redraw, int *q_level)
 {
   struct QClass *q_list = *quote_list;
   struct QClass *class = NULL, *tmp = NULL, *ptr = NULL, *save = NULL;
diff --git a/parse.c b/parse.c
index 4d83405dd43967332e133a58180987c12b00870d..9d6b2267f62eec5f1eebbbc11b47e766f0f6f58c 100644 (file)
--- a/parse.c
+++ b/parse.c
@@ -583,7 +583,8 @@ struct Body *mutt_parse_multipart(FILE *fp, const char *boundary, LOFF_T end_off
 #ifdef SUN_ATTACHMENT
   int lines;
 #endif
-  int blen, len, crlf = 0;
+  size_t blen, len;
+  int crlf = 0;
   char buffer[LONG_STRING];
   struct Body *head = NULL, *last = NULL, *new = NULL;
   int i;
index f724ec88abd6153e5d7390cd1c1d910f5c4046a2..93e1c02cf52535d20a2c767a9e918521b388efa3 100644 (file)
@@ -203,7 +203,7 @@ static bool pgpring_string_matches_hint(const char *s, const char *hints[], int
 static void pgp_make_pgp2_fingerprint(unsigned char *buf, unsigned char *digest)
 {
   struct Md5Ctx ctx;
-  unsigned int size = 0;
+  size_t size = 0;
 
   mutt_md5_init_ctx(&ctx);
 
diff --git a/pop.c b/pop.c
index aa439023185dab83dd5a34d679c5b5a3585e21ca..6ba4fb09b3a12bf008a84663ae0e5f9cbe23078d 100644 (file)
--- a/pop.c
+++ b/pop.c
@@ -83,7 +83,7 @@ static int pop_read_header(struct PopData *pop_data, struct Header *h)
 {
   FILE *f = NULL;
   int rc, index;
-  long length;
+  size_t length;
   char buf[LONG_STRING];
   char tempfile[_POSIX_PATH_MAX];
 
@@ -99,7 +99,7 @@ static int pop_read_header(struct PopData *pop_data, struct Header *h)
   rc = pop_query(pop_data, buf, sizeof(buf));
   if (rc == 0)
   {
-    sscanf(buf, "+OK %d %ld", &index, &length);
+    sscanf(buf, "+OK %d %zu", &index, &length);
 
     snprintf(buf, sizeof(buf), "TOP %d 0\r\n", h->refno);
     rc = pop_fetch_data(pop_data, buf, NULL, fetch_message, f);
index b1a39cc8a1daf29d1dc885beb4797ad758c426d2..2fd1ef2c68ca2c8e24e01f1297a57b83ec26bf12 100644 (file)
--- a/protos.h
+++ b/protos.h
@@ -157,7 +157,7 @@ void mutt_check_rescore(struct Context *ctx);
 void mutt_clear_error(void);
 void mutt_clear_pager_position(void);
 void mutt_decode_attachment(struct Body *b, struct State *s);
-void mutt_decode_base64(struct State *s, long len, int istext, iconv_t cd);
+void mutt_decode_base64(struct State *s, size_t len, int istext, iconv_t cd);
 void mutt_default_save(char *path, size_t pathlen, struct Header *hdr);
 void mutt_display_address(struct Envelope *env);
 void mutt_draw_statusline(int cols, const char *buf, int buflen);
@@ -191,7 +191,7 @@ void mutt_free_color(int fg, int bg);
 void mutt_free_enter_state(struct EnterState **esp);
 void mutt_free_regex(struct Regex **pp);
 void mutt_help(int menu);
-void mutt_check_lookup_list(struct Body *b, char *type, int len);
+void mutt_check_lookup_list(struct Body *b, char *type, size_t len);
 void mutt_make_attribution(struct Context *ctx, struct Header *cur, FILE *out);
 void mutt_make_forward_subject(struct Envelope *env, struct Context *ctx, struct Header *cur);
 void mutt_make_help(char *d, size_t dlen, const char *txt, int menu, int op);
index 19a72b014546cc3ea70f84bbfb2f0b5484e1cd4c..dcc3081ad3863e95ff405a5f48e54c6eabe1da33 100644 (file)
--- a/sendlib.c
+++ b/sendlib.c
@@ -315,7 +315,7 @@ int mutt_write_mime_header(struct Body *a, FILE *f)
   char buffer[STRING];
   char *t = NULL;
   char *fn = NULL;
-  int len;
+  size_t len;
   int tmplen;
   int encode;
 
@@ -1613,7 +1613,7 @@ void mutt_write_address_list(struct Address *adr, FILE *fp, int linelen, int dis
   struct Address *tmp = NULL;
   char buf[LONG_STRING];
   int count = 0;
-  int len;
+  size_t len;
 
   while (adr)
   {
index b31227ae35445ceb38938bc1ea78dd9116de42d2..17d3b53ef651e4267426c21a6143ee559b466318 100644 (file)
--- a/sidebar.c
+++ b/sidebar.c
@@ -252,7 +252,7 @@ static const char *sidebar_format_str(char *buf, size_t buflen, size_t col, int
  * mutt_expando_format to do the actual work. mutt_expando_format will callback to
  * us using sidebar_format_str() for the sidebar specific formatting characters.
  */
-static void make_sidebar_entry(char *buf, unsigned int buflen, int width,
+static void make_sidebar_entry(char *buf, size_t buflen, int width,
                                char *box, struct SbEntry *sbe)
 {
   if (!buf || !box || !sbe)
@@ -276,7 +276,7 @@ static void make_sidebar_entry(char *buf, unsigned int buflen, int width,
   else if (w > width)
   {
     /* Truncate to fit */
-    int len = mutt_wstr_trunc(buf, buflen, width, NULL);
+    size_t len = mutt_wstr_trunc(buf, buflen, width, NULL);
     buf[len] = 0;
   }
 }
diff --git a/url.c b/url.c
index 4bcdca47b812260c52a9f90f913766f307ae36f1..58f73bdb8a7c840abc6bb3e214c6e38ca486b3fc 100644 (file)
--- a/url.c
+++ b/url.c
@@ -284,7 +284,7 @@ void url_pct_encode(char *dst, size_t l, const char *src)
  */
 int url_tostring(struct Url *u, char *dest, size_t len, int flags)
 {
-  long l;
+  size_t l;
 
   if (u->scheme == U_UNKNOWN)
     return -1;
index 00e28a38256bb4a1a4c320aa9a58cc4d875c657e..49b27d9b5b3d702cc41720a92564ef144f995c6a 100644 (file)
--- a/version.c
+++ b/version.c
@@ -295,7 +295,7 @@ static struct CompileOptions comp_opts[] = {
  */
 static void print_compile_options(struct CompileOptions *co)
 {
-  int len;
+  size_t len;
   int used = 2;
   bool tty = stdout ? isatty(fileno(stdout)) : false;