[1193] in Kerberos-V5-bugs
default realm fix...
daemon@ATHENA.MIT.EDU (epeisach@MIT.EDU)
Sat Mar 18 09:05:34 1995
From: epeisach@MIT.EDU
Date: Sat, 18 Mar 1995 09:05:24 -0500
To: krb5-bugs@MIT.EDU
I figured that we might as well check that the context is non-null and
that the magic number is correct... This diff superseeds the def_realm.c
patch from yesterday...
===================================================================
RCS file: /mit/krb5/.cvsroot/src/lib/krb5/os/def_realm.c,v
retrieving revision 5.14
diff -c -r5.14 def_realm.c
*** def_realm.c 1995/03/07 23:12:27 5.14
--- def_realm.c 1995/03/18 14:02:19
***************
*** 32,38 ****
* available. [e.g. to interpret a user-typed principal name with the
* realm omitted for convenience]
*
! * returns system errors, NOT_ENOUGH_SPACE
*/
/*
--- 32,38 ----
* available. [e.g. to interpret a user-typed principal name with the
* realm omitted for convenience]
*
! * returns system errors, NOT_ENOUGH_SPACE, KV5M_CONTEXT
*/
/*
***************
*** 44,56 ****
extern char *krb5_config_file; /* extern so can be set at
load/runtime */
- /*
- * In case the program wants to override this.
- */
- extern char *krb5_override_default_realm;
-
- char *krb5_override_default_realm = 0;
-
krb5_error_code INTERFACE
krb5_get_default_realm(context, lrealm)
krb5_context context;
--- 44,49 ----
***************
*** 58,71 ****
{
FILE *config_file;
char realmbuf[BUFSIZ];
- static char *saved_realm = 0;
char *realm;
char *cp;
! if (krb5_override_default_realm)
! realm = krb5_override_default_realm;
! else if (saved_realm)
! realm = saved_realm;
else {
if (!(config_file = fopen(krb5_config_file, "r")))
/* can't open */
--- 51,64 ----
{
FILE *config_file;
char realmbuf[BUFSIZ];
char *realm;
char *cp;
! if (!context || (context->magic != KV5M_CONTEXT))
! return KV5M_CONTEXT;
!
! if (context->default_realm)
! realm = context->default_realm;
else {
if (!(config_file = fopen(krb5_config_file, "r")))
/* can't open */
***************
*** 85,101 ****
if (cp)
*cp = '\0';
! saved_realm = malloc(strlen (realmbuf) + 1);
! if (!saved_realm)
return ENOMEM;
! strcpy(saved_realm, realmbuf);
! realm = saved_realm;
}
if (!(*lrealm = cp = malloc((unsigned int) strlen(realm) + 1)))
return ENOMEM;
strcpy(cp, realm);
return(0);
}
--- 78,121 ----
if (cp)
*cp = '\0';
! context->default_realm = malloc(strlen (realmbuf) + 1);
! if (!context->default_realm)
return ENOMEM;
! strcpy(context->default_realm, realmbuf);
! realm = context->default_realm;
}
if (!(*lrealm = cp = malloc((unsigned int) strlen(realm) + 1)))
return ENOMEM;
strcpy(cp, realm);
return(0);
+ }
+
+ krb5_error_code INTERFACE
+ krb5_set_default_realm(context, lrealm)
+ krb5_context context;
+ const char *lrealm;
+ {
+ if (!context || (context->magic != KV5M_CONTEXT))
+ return KV5M_CONTEXT;
+
+ if (context->default_realm) {
+ free(context->default_realm);
+ context->default_realm = 0;
+ }
+
+ /* Allow the user to clear the default realm setting by passing in
+ NULL */
+ if (!lrealm) return 0;
+
+ context->default_realm = malloc(strlen (lrealm) + 1);
+
+ if (!context->default_realm)
+ return ENOMEM;
+
+ strcpy(context->default_realm, lrealm);
+ return(0);
+
}