From 2ea34666d933596e2c0f9756a43088d73c0fae44 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Mon, 10 Sep 2018 15:19:33 -0500 Subject: [PATCH] heimdal: Fix printing a short int into a string The size of portstr is too small to print an integer. Instead just let snprintf do the work. This fixes building with GCC 7.1 Based on feedback by Jeffrey Altman BUG: https://bugzilla.samba.org/show_bug.cgi?id=12930 (Inspired by Samba commit abd74c3ba5e3ee3f5320bff6ed7dff4fbcb79373) Signed-off-by: Andrew Bartlett --- lib/krb5/krbhst.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/krb5/krbhst.c b/lib/krb5/krbhst.c index f53512883..1c93b75cb 100644 --- a/lib/krb5/krbhst.c +++ b/lib/krb5/krbhst.c @@ -353,14 +353,14 @@ krb5_krbhst_format_string(krb5_context context, const krb5_krbhst_info *host, char *hostname, size_t hostlen) { const char *proto = ""; - char portstr[7] = ""; if(host->proto == KRB5_KRBHST_TCP) proto = "tcp/"; else if(host->proto == KRB5_KRBHST_HTTP) proto = "http://"; - if(host->port != host->def_port) - snprintf(portstr, sizeof(portstr), ":%d", host->port); - snprintf(hostname, hostlen, "%s%s%s", proto, host->hostname, portstr); + if (host->port != host->def_port) + snprintf(hostname, hostlen, "%s%s:%d", proto, host->hostname, (int)host->port); + else + snprintf(hostname, hostlen, "%s%s", proto, host->hostname); return 0; }