summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTheodore Tso <tytso@mit.edu>1994-06-25 01:04:03 +0000
committerTheodore Tso <tytso@mit.edu>1994-06-25 01:04:03 +0000
commit27b2c92d428e60241434633ad0ed6958a46d8ced (patch)
tree7fe435a99a2b27fb9c805585e7eaa110979cc997 /src
parent8392010ed67beffca98dc0d8b2e02e17c30f5947 (diff)
downloadkrb5-27b2c92d428e60241434633ad0ed6958a46d8ced.tar.gz
krb5-27b2c92d428e60241434633ad0ed6958a46d8ced.tar.xz
krb5-27b2c92d428e60241434633ad0ed6958a46d8ced.zip
Plug memory leaks, and other miscellaneous bugs reported by Jim Miller
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@3914 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src')
-rw-r--r--src/kadmin/server/ChangeLog15
-rw-r--r--src/kadmin/server/adm_adm_func.c17
-rw-r--r--src/kadmin/server/adm_process.c6
3 files changed, 36 insertions, 2 deletions
diff --git a/src/kadmin/server/ChangeLog b/src/kadmin/server/ChangeLog
new file mode 100644
index 000000000..50600c6b3
--- /dev/null
+++ b/src/kadmin/server/ChangeLog
@@ -0,0 +1,15 @@
+Fri Jun 24 20:39:37 1994 Theodore Y. Ts'o (tytso at tsx-11)
+
+ * adm_process.c (process_client): Plug memory leaks
+
+ * adm_adm_func. (adm_inq_old_key): Plug memory leaks, return error
+ when adm_fmt_prt returns an error
+
+ * adm_adm_func.c (adm_mod_old_key): Plug memory leaks, report error
+ if put_principal returns an error.
+
+ * adm_adm_func.c (adm_change_pwd_rnd): Fix syslog information
+
+ * adm_adm_func.c (adm_build_key): Plug memory leak
+
+
diff --git a/src/kadmin/server/adm_adm_func.c b/src/kadmin/server/adm_adm_func.c
index 32cb2d44e..2499c5173 100644
--- a/src/kadmin/server/adm_adm_func.c
+++ b/src/kadmin/server/adm_adm_func.c
@@ -154,6 +154,7 @@ krb5_db_entry entry;
/* Send private message to Client */
if (krb5_write_message(&client_server_info.client_socket, &msg_data)){
+ free(msg_data.data);
com_err("adm_build_key", 0, "Error Performing Password Write");
return(5); /* Protocol Failure */
}
@@ -280,7 +281,7 @@ krb5_ticket *client_creds;
syslog(LOG_AUTH | LOG_INFO,
- "Remote Administrative Addition Request for %s by %s",
+ "Remote Administrative Random Password Change Request for %s by %s",
customer_name, client_server_info.name_of_client);
if (retval = krb5_parse_name(customer_name, &newprinc)) {
@@ -523,6 +524,7 @@ krb5_ticket *client_creds;
if (!adm_princ_exists("adm_mod_old_key", newprinc,
&entry, &nprincs)) {
+ krb5_db_free_principal(&entry, nprincs);
com_err("adm_mod_old_key", 0,
"principal '%s' is not in the database",
customer_name);
@@ -562,6 +564,7 @@ krb5_ticket *client_creds;
free(outbuf.data);
if (krb5_write_message(&client_server_info.client_socket, &msg_data)){
+ free(msg_data.data);
krb5_free_principal(newprinc);
krb5_db_free_principal(&entry, nprincs);
com_err("adm_mod_old_key", 0,
@@ -680,6 +683,12 @@ krb5_ticket *client_creds;
}
retval = krb5_db_put_principal(&entry, &one);
+ if (retval) {
+ com_err("adm_mod_old_key", retval, "while storing principal");
+ krb5_free_principal(newprinc);
+ krb5_db_free_principal(&entry, nprincs);
+ return(8); /* Update failed */
+ }
one = 1;
} /* for */
@@ -746,6 +755,7 @@ krb5_ticket *client_creds;
if (!adm_princ_exists("adm_inq_old_key", newprinc,
&entry, &nprincs)) {
+ krb5_db_free_principal(&entry, nprincs);
krb5_free_principal(newprinc);
free(fullname);
com_err("adm_inq_old_key", 0, "principal '%s' is not in the database",
@@ -767,6 +777,7 @@ krb5_ticket *client_creds;
krb5_free_principal(newprinc);
free(fullname);
com_err("adm_inq_old_key", 0, "Unable to Format Inquiry Data");
+ return(5); /* XXX protocol failure --- not right, but.. */
}
outbuf.length = strlen(outbuf.data);
krb5_db_free_principal(&entry, nprincs);
@@ -788,9 +799,11 @@ krb5_ticket *client_creds;
free(outbuf.data);
return(5); /* Protocol Failure */
}
+ free(outbuf.data);
/* Send Inquiry Information */
if (krb5_write_message(&client_server_info.client_socket, &msg_data)){
+ free(msg_data.data);
com_err("adm_inq_old_key", 0, "Error Performing Write");
return(5); /* Protocol Failure */
}
@@ -820,6 +833,8 @@ krb5_ticket *client_creds;
return(5); /* Protocol Failure */
}
+ /* XXX Decrypt client response.... and we don't use it?!? */
+
free(msg_data.data);
free(inbuf.data);
return(retval);
diff --git a/src/kadmin/server/adm_process.c b/src/kadmin/server/adm_process.c
index 98b98bafe..2eba71860 100644
--- a/src/kadmin/server/adm_process.c
+++ b/src/kadmin/server/adm_process.c
@@ -277,8 +277,10 @@ char *prog;
error_message(retval));
(void) sprintf(retbuf, "kadmind error during recvauth: %s\n",
error_message(retval));
- exit(1);
+ krb5_free_keyblock(cpw_key.key);
+ goto finish;
}
+ krb5_free_keyblock(cpw_key.key);
/* Check if ticket was issued using password (and not tgt)
* within the last 5 minutes
@@ -355,6 +357,7 @@ char *prog;
0,
0,
&msg_data))) {
+ free(inbuf.data);
syslog(LOG_ERR, "kadmind error: rd_priv:%s\n", error_message(retval));
goto finish;
}
@@ -427,6 +430,7 @@ char *prog;
/* Send Final Reply to Client */
if (retval = krb5_write_message(&client_server_info.client_socket,
&msg_data)){
+ free(msg_data.data);
syslog(LOG_ERR, "Error Performing Final Write: %s",
error_message(retval));
retval = 1;