diff options
author | Theodore Tso <tytso@mit.edu> | 1995-05-03 02:31:01 +0000 |
---|---|---|
committer | Theodore Tso <tytso@mit.edu> | 1995-05-03 02:31:01 +0000 |
commit | a0ea2067dd6c8b3b88a90d1949efca4297ad1408 (patch) | |
tree | 9431853d9277bcbba5c6c2adb7a4e40a596c846d /src/kadmin.old | |
parent | c722d676859d7cc90952b9658a4dbd42e1c6facc (diff) | |
download | krb5-a0ea2067dd6c8b3b88a90d1949efca4297ad1408.tar.gz krb5-a0ea2067dd6c8b3b88a90d1949efca4297ad1408.tar.xz krb5-a0ea2067dd6c8b3b88a90d1949efca4297ad1408.zip |
kadmin.c (main): Fix really broken way client and client_name
were being handled. Memory was being leaked, and then
memory blocks which were allocated to small where then
overrun.
kadmin_add.c (kadm_add_user): Fix memory leak.
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@5693 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/kadmin.old')
-rw-r--r-- | src/kadmin.old/client/ChangeLog | 9 | ||||
-rw-r--r-- | src/kadmin.old/client/kadmin.c | 19 | ||||
-rw-r--r-- | src/kadmin.old/client/kadmin_add.c | 3 |
3 files changed, 26 insertions, 5 deletions
diff --git a/src/kadmin.old/client/ChangeLog b/src/kadmin.old/client/ChangeLog index c4f9cd2eec..c29778791a 100644 --- a/src/kadmin.old/client/ChangeLog +++ b/src/kadmin.old/client/ChangeLog @@ -1,3 +1,12 @@ +Mon May 1 23:19:10 1995 Theodore Y. Ts'o (tytso@dcl) + + * kadmin.c (main): Fix really broken way client and client_name + were being handled. Memory was being leaked, and then + memory blocks which were allocated to small where then + overrun. + + * kadmin_add.c (kadm_add_user): Fix memory leak. + Sat Apr 29 12:47:55 1995 Ezra Peisach <epeisach@kangaroo.mit.edu> * kadmin_done.c (kadm_done): Removed unused argument to match call diff --git a/src/kadmin.old/client/kadmin.c b/src/kadmin.old/client/kadmin.c index 19727a66da..9f91138027 100644 --- a/src/kadmin.old/client/kadmin.c +++ b/src/kadmin.old/client/kadmin.c @@ -20,6 +20,7 @@ * Perform Remote Kerberos Administrative Functions */ +#include <unistd.h> #include <stdio.h> #include <ctype.h> #include <sys/types.h> @@ -100,9 +101,6 @@ main(argc,argv) krb5_init_context(&context); krb5_init_ets(context); - client_name = (char *) malloc(755); - memset((char *) client_name, 0, sizeof(client_name)); - while ((option = getopt(argc, argv, "c:np:")) != EOF) { switch (option) { case 'c': @@ -123,6 +121,8 @@ main(argc,argv) if (optind < argc) { /* Admin name specified on command line */ + client_name = (char *) malloc(755); + memset((char *) client_name, 0, sizeof(client_name)); strcpy(client_name, argv[optind++]); if (retval = krb5_parse_name(context, client_name, &client)) { fprintf(stderr, "Error Parsing %s\n", client_name); @@ -141,9 +141,12 @@ main(argc,argv) /* At this point, both client and client_name are set up. */ if (!nflag) { + free(client_name); + client_name = (char *) malloc(755); strcpy(client_name, client->data[0].data); strncat(client_name, "/admin@", 7); strncat(client_name, client->realm.data, client->realm.length); + krb5_free_principal(context, client); if (retval = krb5_parse_name(context, client_name, &client)) { fprintf(stderr, "Unable to Parse %s\n", client_name); usage(); @@ -300,6 +303,7 @@ main(argc,argv) exit(1); } free(inbuf.data); + free(msg_data.data); valid = 0; princ_name[0] = '\0'; @@ -420,6 +424,7 @@ repeat: if (rd_priv_resp.message) free(rd_priv_resp.message); + krb5_free_principal(context, client); exit(retval); } @@ -447,6 +452,7 @@ get_first_ticket(context, cache, client, my_creds) } if ((retval = krb5_os_localaddr(&my_addresses))) { + free(client_name); fprintf(stderr, "Unable to Get Principals Address!\n"); return(1); } @@ -467,6 +473,7 @@ get_first_ticket(context, cache, client, my_creds) fprintf(stderr, "Error %s while building client name!\n", error_message(retval)); krb5_free_addresses(context, my_addresses); + free(client_name); return(1); } @@ -474,6 +481,7 @@ get_first_ticket(context, cache, client, my_creds) if ((password = (char *) calloc (1, 255)) == NULL) { fprintf(stderr, "No Memory for Retrieving Admin Password!\n"); + free(client_name); return(1); } @@ -487,6 +495,7 @@ get_first_ticket(context, cache, client, my_creds) client_name); free(password); krb5_free_addresses(context, my_addresses); + free(client_name); return(1); } @@ -501,6 +510,7 @@ get_first_ticket(context, cache, client, my_creds) memset((char *) password, 0, pwsize); free(password); krb5_free_addresses(context, my_addresses); + free(client_name); if (retval) { fprintf(stderr, "\nUnable to Get Initial Credentials: %s!\n", @@ -656,9 +666,8 @@ get_def_princ(context, client) fprintf(stderr, "root is not a valid Administrator\n!\n"); usage(); } - - (void) krb5_cc_close(context, cache); } + (void) krb5_cc_close(context, cache); } usage() diff --git a/src/kadmin.old/client/kadmin_add.c b/src/kadmin.old/client/kadmin_add.c index c04eca8446..bfc05a8396 100644 --- a/src/kadmin.old/client/kadmin_add.c +++ b/src/kadmin.old/client/kadmin_add.c @@ -127,6 +127,7 @@ kadm_add_user(context, auth_context, my_creds, local_socket, free(rd_priv_resp.message); } else fprintf(stderr, "Generic error from server.\n\n"); + free(msg_data.data); return(0); } @@ -160,6 +161,8 @@ kadm_add_user(context, auth_context, my_creds, local_socket, #else + free(msg_data.data); + if ((password = (char *) calloc (1, ADM_MAX_PW_LENGTH+1)) == (char *) 0) { fprintf(stderr, "No Memory for allocation of password!\n"); return(1); |