summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorart <art@openbsd.org>1998-08-16 20:48:37 +0000
committerart <art@openbsd.org>1998-08-16 20:48:37 +0000
commit05fd230ed455b3897222fd0e7ffe4593beec345b (patch)
tree2a3814ada32d2906b3606cf82c2adee390911209
parentdeal with realloc/malloc failure and don't trash old pointer if realloc fails (diff)
downloadwireguard-openbsd-05fd230ed455b3897222fd0e7ffe4593beec345b.tar.xz
wireguard-openbsd-05fd230ed455b3897222fd0e7ffe4593beec345b.zip
realloc correctly
-rw-r--r--kerberosIV/krb/getaddrs.c10
-rw-r--r--kerberosIV/krb/send_to_kdc.c11
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);