diff options
author | 1998-08-16 20:48:37 +0000 | |
---|---|---|
committer | 1998-08-16 20:48:37 +0000 | |
commit | 05fd230ed455b3897222fd0e7ffe4593beec345b (patch) | |
tree | 2a3814ada32d2906b3606cf82c2adee390911209 | |
parent | deal with realloc/malloc failure and don't trash old pointer if realloc fails (diff) | |
download | wireguard-openbsd-05fd230ed455b3897222fd0e7ffe4593beec345b.tar.xz wireguard-openbsd-05fd230ed455b3897222fd0e7ffe4593beec345b.zip |
realloc correctly
-rw-r--r-- | kerberosIV/krb/getaddrs.c | 10 | ||||
-rw-r--r-- | kerberosIV/krb/send_to_kdc.c | 11 |
2 files changed, 15 insertions, 6 deletions
diff --git a/kerberosIV/krb/getaddrs.c b/kerberosIV/krb/getaddrs.c index 71fe9f47318..90a2a9b0d62 100644 --- a/kerberosIV/krb/getaddrs.c +++ b/kerberosIV/krb/getaddrs.c @@ -1,4 +1,4 @@ -/* $OpenBSD: getaddrs.c,v 1.8 1998/07/07 19:06:50 art Exp $ */ +/* $OpenBSD: getaddrs.c,v 1.9 1998/08/16 20:48:37 art Exp $ */ /* $KTH: getaddrs.c,v 1.24 1998/04/26 15:10:44 joda Exp $ */ /* @@ -107,11 +107,15 @@ k_get_all_addrs (struct in_addr **l) ifreq = *ifr; } } - if (j != num) - if ((*l = realloc (*l, j * sizeof(struct in_addr))) == NULL) { + if (j != num) { + struct in_addr *temp; + if ((temp = realloc (*l, j * sizeof(struct in_addr))) == NULL) { + free(*l); close(fd); return -1; } + *l = temp; + } close(fd); return j; diff --git a/kerberosIV/krb/send_to_kdc.c b/kerberosIV/krb/send_to_kdc.c index d07a6aa7a1e..2c4c538e510 100644 --- a/kerberosIV/krb/send_to_kdc.c +++ b/kerberosIV/krb/send_to_kdc.c @@ -1,4 +1,4 @@ -/* $OpenBSD: send_to_kdc.c,v 1.12 1998/07/07 19:07:01 art Exp $ */ +/* $OpenBSD: send_to_kdc.c,v 1.13 1998/08/16 20:48:39 art Exp $ */ /* $KTH: send_to_kdc.c,v 1.54 1998/02/17 23:55:35 bg Exp $ */ /* @@ -135,9 +135,14 @@ send_to_kdc(KTEXT pkt, KTEXT rpkt, char *realm) continue; no_host = 0; /* found at least one */ while ((p = *(host->h_addr_list)++)) { - hosts = realloc(hosts, sizeof(*hosts) * (n_hosts + 1)); - if (hosts == NULL) + struct host *temp; + + temp = realloc(hosts, sizeof(*hosts) * (n_hosts + 1)); + if (temp == NULL) { + free(hosts); return SKDC_CANT; + } + hosts = temp; memset (&hosts[n_hosts].addr, 0, sizeof(hosts[n_hosts].addr)); hosts[n_hosts].addr.sin_family = host->h_addrtype; hosts[n_hosts].addr.sin_port = htons(k_host->port); |