diff --git a/lib/krb5/sock_principal.c b/lib/krb5/sock_principal.c index 944738946..a5e213721 100644 --- a/lib/krb5/sock_principal.c +++ b/lib/krb5/sock_principal.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 1998 Kungliga Tekniska Högskolan + * Copyright (c) 1997, 1998, 1999 Kungliga Tekniska Högskolan * (Royal Institute of Technology, Stockholm, Sweden). * All rights reserved. * @@ -49,25 +49,18 @@ krb5_sock_to_principal (krb5_context context, { krb5_error_code ret; krb5_address address; - int len = krb5_max_sockaddr_size (); - char *buf = malloc(len); - struct sockaddr *sa; + struct sockaddr_storage __ss; + struct sockaddr *sa = (struct sockaddr *)&__ss; + int len = sizeof(__ss); struct hostent *hostent; int family; char hname[256]; - if (buf == NULL) - return ENOMEM; - sa = (struct sockaddr *)buf; - - if (getsockname (sock, sa, &len) < 0) { - free (buf); + if (getsockname (sock, sa, &len) < 0) return errno; - } family = sa->sa_family; ret = krb5_sockaddr2address (sa, &address); - free (buf); if (ret) return ret;