summaryrefslogtreecommitdiffstats
path: root/crypto/kerberosIV
diff options
context:
space:
mode:
authorassar <assar@FreeBSD.org>2001-03-12 03:48:03 +0000
committerassar <assar@FreeBSD.org>2001-03-12 03:48:03 +0000
commit1387b4dc3d325fc7b4f88127c391ca30063e6cf1 (patch)
tree421dbbf1f0ced65cb01746fb3fc1d2a913031daf /crypto/kerberosIV
parent9060ef19e9519428bb13225828f90a85571542df (diff)
downloadFreeBSD-src-1387b4dc3d325fc7b4f88127c391ca30063e6cf1.zip
FreeBSD-src-1387b4dc3d325fc7b4f88127c391ca30063e6cf1.tar.gz
initialize pointers to NULL and sized to 0 to avoid free:ing invalid memory.
PR: bin/20779
Diffstat (limited to 'crypto/kerberosIV')
-rw-r--r--crypto/kerberosIV/lib/kadm/kadm_cli_wrap.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/crypto/kerberosIV/lib/kadm/kadm_cli_wrap.c b/crypto/kerberosIV/lib/kadm/kadm_cli_wrap.c
index 8403014..2c7f006 100644
--- a/crypto/kerberosIV/lib/kadm/kadm_cli_wrap.c
+++ b/crypto/kerberosIV/lib/kadm/kadm_cli_wrap.c
@@ -29,7 +29,8 @@ or implied warranty.
#include "kadm_locl.h"
-RCSID("$Id: kadm_cli_wrap.c,v 1.27 1999/09/16 20:41:46 assar Exp $");
+/* RCSID("$Id: kadm_cli_wrap.c,v 1.27 1999/09/16 20:41:46 assar Exp $");*/
+RCSID("$FreeBSD$");
static Kadm_Client client_parm;
@@ -165,6 +166,8 @@ kadm_cli_out(u_char *dat, int dat_len, u_char **ret_dat, int *ret_siz)
int retval;
char tmp[4];
+ *ret_dat = NULL;
+ *ret_siz = 0;
dlen = (u_int16_t) dat_len;
if (dat_len != (int)dlen)
@@ -193,6 +196,8 @@ kadm_cli_out(u_char *dat, int dat_len, u_char **ret_dat, int *ret_siz)
if ((retval = krb_net_read(client_parm.admin_fd, *ret_dat,
dlen) != dlen)) {
+ free(*ret_dat);
+ *ret_dat = NULL;
if (retval < 0)
return(errno); /* XXX */
else
@@ -238,6 +243,9 @@ kadm_cli_send(u_char *st_dat, /* the actual data */
int tmp;
void *tmp_ptr;
+ *ret_dat = NULL;
+ *ret_siz = 0;
+
act_st = malloc(KADM_VERSIZE); /* verstr stored first */
if (act_st == NULL) {
clear_secrets ();
@@ -309,7 +317,7 @@ kadm_cli_send(u_char *st_dat, /* the actual data */
clear_secrets();
return retdat;
}
-#define RET_N_FREE2(r) {free(*ret_dat); clear_secrets(); return(r);}
+#define RET_N_FREE2(r) {free(*ret_dat); *ret_dat = NULL; clear_secrets(); return(r);}
/* first see if it's a YOULOUSE */
if ((*ret_siz >= KADM_VERSIZE) &&
@@ -410,9 +418,7 @@ int kadm_change_pw_plain(unsigned char *newkey, char *password, char **pw_msg)
msg[0]=0;
*pw_msg=msg;
}
-
- if (ret_st)
- free(ret_st);
+ free(ret_st);
kadm_cli_disconn();
return(retc);
@@ -481,8 +487,8 @@ kadm_add(Kadm_vals *vals)
/* ret_st has vals */
if (stream_to_vals(ret_st, vals, ret_sz) < 0)
retc = KADM_LENGTH_ERROR;
- free(ret_st);
}
+ free(ret_st);
kadm_cli_disconn();
return(retc);
}
@@ -539,8 +545,8 @@ kadm_mod(Kadm_vals *vals1, Kadm_vals *vals2)
/* ret_st has vals */
if (stream_to_vals(ret_st, vals2, ret_sz) < 0)
retc = KADM_LENGTH_ERROR;
- free(ret_st);
}
+ free(ret_st);
kadm_cli_disconn();
return(retc);
}
@@ -571,6 +577,7 @@ kadm_del(Kadm_vals *vals)
}
retc = kadm_cli_send(st2, st_len + 1, &ret_st, &ret_sz);
free(st2);
+ free(ret_st);
kadm_cli_disconn();
return(retc);
}
@@ -618,8 +625,8 @@ kadm_get(Kadm_vals *vals, u_char *fl)
/* ret_st has vals */
if (stream_to_vals(ret_st, vals, ret_sz) < 0)
retc = KADM_LENGTH_ERROR;
- free(ret_st);
}
+ free(ret_st);
kadm_cli_disconn();
return(retc);
}
OpenPOWER on IntegriCloud