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 <abartlet@samba.org>
This commit is contained in:
Andrew Bartlett
2018-09-10 15:19:33 -05:00
committed by Luke Howard
parent a3d8951df5
commit 2ea34666d9

View File

@@ -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;
}