[1193] in Kerberos-V5-bugs

home help back first fref pref prev next nref lref last post

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);
+ 
  }

home help back first fref pref prev next nref lref last post