krb5_address **my_addresses;
krb5_error_code code;
krb5_principal me;
- krb5_data *server[4];
+ krb5_principal server;
krb5_creds my_creds;
krb5_timestamp now;
memset((char *)&my_creds, 0, sizeof(my_creds));
my_creds.client = me;
- my_creds.server = server;
- server[0] = me[0]; /* realm name */
- server[1] = &tgtname;
- server[2] = me[0];
- server[3] = 0;
+ if (code = krb5_build_principal_ext(&server,
+ me[0]->length, me[0]->data,
+ tgtname.length, tgtname.data,
+ me[0]->length, me[0]->data,
+ 0)) {
+ com_err(argv[0], code, "while building server name");
+ exit(1);
+ }
+
+ my_creds.server = server;
code = krb5_os_localaddr(&my_addresses);
if (code != 0) {
0, /* let lib read pwd from kbd */
ccache,
&my_creds);
+ krb5_free_principal(server);
if (code != 0) {
com_err (argv[0], code, "while getting initial credentials");
exit(1);
static krb5_principal client_principal = { 0 };
krb5_creds creds;
- krb5_data *server[4];
+ krb5_principal server;
krb5_data srvdata[3];
krb5_error_code r;
krb5_ticket *ticket;
- set_data5(srvdata[0], realm);
- set_data5(srvdata[1], service);
- set_data5(srvdata[2], instance);
-
- server[0] = &srvdata[0];
- server[1] = &srvdata[1];
- server[2] = &srvdata[2];
- server[3] = 0;
+ if (r = krb5_build_principal(&server,
+ strlen(realm), realm,
+ service,
+ instance,
+ 0)) {
+ return(krb425error(r));
+ }
if (!_krb425_ccache)
krb5_cc_default(&_krb425_ccache);
creds.times.endtime = 0;
creds.keyblock.keytype = KEYTYPE_DES;
- if (r = krb5_get_credentials(0, _krb425_ccache, &creds))
- return(krb425error(r));
+ r = krb5_get_credentials(0, _krb425_ccache, &creds);
+ krb5_free_principal(server);
+ if (r)
+ return(krb425error(r));
#ifdef EBUG
{
char *realm;
u_long checksum;
{
- krb5_data *server[4];
- krb5_data srvdata[3];
+ krb5_principal server;
krb5_error_code r;
krb5_data outbuf;
krb5_checksum ck;
- set_data5(srvdata[0], realm);
- set_data5(srvdata[1], service);
- set_data5(srvdata[2], instance);
-
- server[0] = &srvdata[0];
- server[1] = &srvdata[1];
- server[2] = &srvdata[2];
- server[3] = 0;
+ if (r = krb5_build_principal(&server,
+ strlen(realm), realm,
+ service,
+ instance,
+ 0)) {
+ return(krb425error(r));
+ }
if (!_krb425_ccache)
krb5_cc_default(&_krb425_ccache);
if (r)
ERROR(r)
#endif
+ krb5_free_principal(server);
if (!r) {
if (outbuf.length > MAX_KTXT_LEN) {
#ifdef EBUG
krb5_address peer;
krb5_tkt_authent *authdat;
char addr[4];
- krb5_data *server[4];
- krb5_data srvdata[3];
+ krb5_principal server;
krb5_error_code r;
krb5_data authe;
extern int gethostname();
}
instance = hostname;
}
- set_data5(srvdata[0], _krb425_local_realm);
- set_data5(srvdata[1], service);
- set_data5(srvdata[2], instance);
-
- server[0] = &srvdata[0];
- server[1] = &srvdata[1];
- server[2] = &srvdata[2];
- server[3] = 0;
-
+ if (r = krb5_build_principal(&server,
+ strlen(_krb425_local_realm),
+ _krb425_local_realm,
+ service,
+ instance,
+ 0)) {
+ return(krb425error(r));
+ }
authe.length = authent->length;
authe.data = (char *)authent->dat;
/* ? : will break some compilers when dealing with function pointers */
if (use_set_key)
r = krb5_rd_req(&authe,
- (krb5_principal)server,
+ server,
from_addr ? &peer : 0,
fn, setkey_key_proc,
0, 0, &authdat);
else
r = krb5_rd_req(&authe,
- (krb5_principal)server,
+ server,
from_addr ? &peer : 0,
fn, 0,
0, 0, &authdat);
+ krb5_free_principal(server);
if (r) {
#ifdef EBUG
ERROR(r)