SCCS-vsn: usr.bin/rlogin/krcmd.c 1.2
#include <sys/types.h>
#include <stdio.h>
#include <sys/types.h>
#include <stdio.h>
+#include <kerberosIV/krb.h>
#define SERVICE_NAME "rcmd"
#define SERVICE_NAME "rcmd"
+/*
+ * krcmd: simplified version of Athena's "kcmd"
+ * returns a socket attached to the destination, -1 or krb error on error
+ * if fd2p is non-NULL, another socket is filled in for it
+ */
+
int
krcmd(ahost, rport, remuser, cmd, fd2p, realm)
char **ahost;
int
krcmd(ahost, rport, remuser, cmd, fd2p, realm)
char **ahost;
int *fd2p;
char *realm;
{
int *fd2p;
char *realm;
{
+ int sock = -1, err = 0;
&ticket,
SERVICE_NAME,
realm,
&ticket,
SERVICE_NAME,
realm,
- NULL, /* credentials not used */
- NULL, /* key schedule not used */
- NULL, /* MSG_DAT not used */
- NULL, /* local addr not used */
- NULL, /* foreign addr not used */
+ (CREDENTIALS *) NULL, /* credentials not used */
+ (bit_64 *) NULL, /* key schedule not used */
+ (MSG_DAT *) NULL, /* MSG_DAT not used */
+ (struct sockaddr_in *) NULL, /* local addr not used */
+ (struct sockaddr_in *) NULL, /* foreign addr not used */
- if(err > KSUCCESS && err < MAX_KRB_ERRORS) {
+ if (err > KSUCCESS && err < MAX_KRB_ERRORS) {
fprintf(stderr, "krcmd: %s\n", krb_err_txt[err]);
return(-1);
}
fprintf(stderr, "krcmd: %s\n", krb_err_txt[err]);
return(-1);
}
+ if (err < 0)
+ return(-1);
realm,
cred, /* filled in */
sched, /* filled in */
realm,
cred, /* filled in */
sched, /* filled in */
- &msg_dat, /* filled in? */
+ &msg_dat, /* filled in */
&laddr, /* filled in */
&faddr, /* filled in */
authopts
);
&laddr, /* filled in */
&faddr, /* filled in */
authopts
);
- if(err > KSUCCESS && err < MAX_KRB_ERRORS) {
+ if (err > KSUCCESS && err < MAX_KRB_ERRORS) {
fprintf(stderr, "krcmd_mutual: %s\n", krb_err_txt[err]);
return(-1);
}
fprintf(stderr, "krcmd_mutual: %s\n", krb_err_txt[err]);
return(-1);
}
+
+ if (err < 0)
+ return (-1);