*/
#define LOG_REMOTE_REALM
#define CRYPT
+#ifdef KRB5_KRB4_COMPAT
#define SERVE_V4
+#endif
#include <stdio.h>
#include <sys/types.h>
/* OK we have authenticated this user - now check authorization. */
/* The Kerberos authenticated programs must use krb5_kuserok or kuserok*/
+#ifdef SERVE_V4
+ if (auth_sys == KRB5_RECVAUTH_V4) {
+ fatal(netf, "This server does not support Kerberos V4");
+ }
+#endif
+
if (must_pass_k5 || must_pass_one) {
-#ifdef ALWAYS_V5_KUSEROK
+#if (defined(ALWAYS_V5_KUSEROK) || !defined(SERVE_V4))
/* krb5_kuserok returns 1 if OK */
if (client && krb5_kuserok(client, lusername))
passed_krb++;
getstr(netf, lusername, sizeof (lusername), "locuser");
getstr(netf, term, sizeof(term), "Terminal type");
+#ifdef SERVE_V4
if (auth_sys == KRB5_RECVAUTH_V4) {
des_read = v4_des_read;
return(status);
return 0;
}
+#endif
/* Must be V5 */
#ifdef KERBEROS
if (must_pass_k5 || must_pass_one) {
-#ifdef ALWAYS_V5_KUSEROK
+#if (defined(ALWAYS_V5_KUSEROK) || !defined(KRB5_KRB4_COMPAT))
if (!krb5_kuserok(client,locuser)) {
syslog(LOG_ERR ,
"Principal %s (%s@%s) for local user %s failed krb5_kuserok.\n",