summaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorJohn Kohl <jtkohl@mit.edu>1990-01-30 18:21:08 +0000
committerJohn Kohl <jtkohl@mit.edu>1990-01-30 18:21:08 +0000
commitf0b3abb16889510fd598f1d1a3ba85a1ac1f5f11 (patch)
tree666f6fa3e67f47094620f9519838260d4a432d37 /src/lib
parent3e01bae07412dc17f32857fa411fc0c0eba05e51 (diff)
(1) change to krb5_error_code
(2) changes for new allocation strategy git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@218 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/krb5/os/localaddr.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/lib/krb5/os/localaddr.c b/src/lib/krb5/os/localaddr.c
index 1b1acbf45..2c8fad177 100644
--- a/src/lib/krb5/os/localaddr.c
+++ b/src/lib/krb5/os/localaddr.c
@@ -76,7 +76,7 @@ extern int errno;
* This uses the SIOCGIFCONF, SIOCGIFFLAGS, and SIOCGIFADDR ioctl's.
*/
-int krb5_os_localaddr(addr)
+krb5_error_code krb5_os_localaddr(addr)
krb5_address ***addr;
{
struct ifreq *ifr;
@@ -130,13 +130,21 @@ int krb5_os_localaddr(addr)
(struct sockaddr_in *)&ifr->ifr_addr;
address = (krb5_address *)
- malloc (sizeof(krb5_address) + sizeof(struct in_addr));
+ malloc (sizeof(krb5_address));
if (address) {
address->addrtype = ADDRTYPE_INET;
address->length = sizeof(struct in_addr);
- memcpy ((char *)address->contents, (char *)&in->sin_addr,
- address->length);
- break;
+ address->contents = (unsigned char *)malloc(address->length);
+ if (!address->contents) {
+ free((char *)address);
+ address = 0;
+ mem_err++;
+ } else {
+ memcpy ((char *)address->contents,
+ (char *)&in->sin_addr,
+ address->length);
+ break;
+ }
} else mem_err++;
}
#endif