308 |
int pv1[2], pv2[2]; |
int pv1[2], pv2[2]; |
309 |
fd_set wready, writeto; |
fd_set wready, writeto; |
310 |
int keytype, keylen; |
int keytype, keylen; |
311 |
|
int cksumtype, cksumlen = 30; |
312 |
|
char cksum[30]; |
313 |
#endif |
#endif |
314 |
|
|
315 |
signal(SIGINT, SIG_DFL); |
signal(SIGINT, SIG_DFL); |
569 |
int rc; |
int rc; |
570 |
char * err_msg = NULL; |
char * err_msg = NULL; |
571 |
|
|
572 |
rc = get_auth (STDIN_FILENO, &h, &enckey, &err_msg, &protocol); |
rc = get_auth (STDIN_FILENO, &h, &enckey, &err_msg, &protocol, |
573 |
|
&cksumtype, cksum, &cksumlen); |
574 |
if (rc != SHISHI_OK) |
if (rc != SHISHI_OK) |
575 |
{ |
{ |
576 |
error ("Kerberos authentication failure: %s\n", err_msg); |
error ("Kerberos authentication failure: %s\n", err_msg); |
591 |
{ |
{ |
592 |
int error; |
int error; |
593 |
int rc; |
int rc; |
594 |
|
char * compcksum; |
595 |
|
size_t compcksumlen; |
596 |
|
char cksumdata[100]; |
597 |
|
struct sockaddr_in sock; |
598 |
|
size_t socklen; |
599 |
|
|
600 |
#ifdef ENCRYPTION |
#ifdef ENCRYPTION |
601 |
if (strlen (cmdbuf) >= 3) |
if (strlen (cmdbuf) >= 3) |
654 |
//error ("Kerberos authentication failure: %s\n", err_msg); |
//error ("Kerberos authentication failure: %s\n", err_msg); |
655 |
exit (1); |
exit (1); |
656 |
} |
} |
657 |
|
|
658 |
|
/* verify checksum */ |
659 |
|
|
660 |
|
/* Doesn't give socket port ? |
661 |
|
if (getsockname (STDIN_FILENO, (struct sockaddr *)&sock, &socklen) < 0) |
662 |
|
{ |
663 |
|
syslog (LOG_ERR, "Can't get sock name"); |
664 |
|
exit (1); |
665 |
|
} |
666 |
|
*/ |
667 |
|
snprintf (cksumdata, 100, "544:%s%s", /*ntohs(sock.sin_port),*/ cmdbuf, locuser); |
668 |
|
rc = shishi_checksum (h, enckey, 0, cksumtype, cksumdata, |
669 |
|
strlen (cksumdata), &compcksum, &compcksumlen); |
670 |
|
if ((rc != SHISHI_OK) || (compcksumlen != cksumlen) || (memcmp (compcksum, cksum, cksumlen) != 0)) |
671 |
|
{ |
672 |
|
/* err_msg crash ? */ |
673 |
|
/* *err_msg = "checksum verify failed"; */ |
674 |
|
syslog (LOG_ERR, "checksum verify failed: %s", shishi_error (h)); |
675 |
|
free (compcksum); |
676 |
|
exit (1); |
677 |
|
} |
678 |
|
|
679 |
|
free (compcksum); |
680 |
|
|
681 |
} |
} |
682 |
#endif |
#endif |
683 |
|
|