1   /*
   2    * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
   3    * Use is subject to license terms.
   4    */
   5   
   6 | #pragma ident        "@(#)g_rel_name.c        1.12        04/09/08 SMI"
   6 | #pragma ident        "@(#)g_rel_name.c        1.11        04/02/23 SMI"
   7   
   8   /*
   9    *  glue routine for gss_release_name
  10    */
  11   
  12   #include <mechglueP.h>
  13   #include <stdio.h>
  14   #ifdef HAVE_STDLIB_H
  15   #include <stdlib.h>
  16   #endif
  17   #include <string.h>
  18   
  19   OM_uint32
  20   gss_release_name(minor_status,
  21                           input_name)
  22   
  23   OM_uint32 *minor_status;
  24   gss_name_t *input_name;
  25   
  26   {
  27           gss_union_name_t        union_name;
  28   
  29 |         /* if input_name is NULL, return error */
  29 |         if (minor_status == NULL)
  30 +                 return (GSS_S_CALL_INACCESSIBLE_WRITE);
  31 +         *minor_status = 0;
  32   
  33 +         /* if input_name is NULL, return error */
  34           if (input_name == 0)
  32 |                 return (GSS_S_BAD_NAME);
  35 |                 return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_BAD_NAME);
  36   
  37           /*
  38            * free up the space for the external_name and then
  39            * free the union_name descriptor
  40            */
  41   
  42           union_name = (gss_union_name_t)*input_name;
  43           *input_name = 0;
  44           *minor_status = 0;
  43 -         if (union_name == NULL)
  44 -                 return (GSS_S_BAD_NAME);
  45 - 
  45   
  46           if (union_name->name_type)
  47                   (void) gss_release_oid(minor_status, &union_name->name_type);
  48   
  49           free(union_name->external_name->value);
  50           free(union_name->external_name);
  51   
  52           if (union_name->mech_type) {
  53                   (void) __gss_release_internal_name(minor_status,
  54                                           union_name->mech_type,
  55                                           &union_name->mech_name);
  56                   (void) gss_release_oid(minor_status, &union_name->mech_type);
  57           }
  58   
  59           free(union_name);
  60   
  61           return (GSS_S_COMPLETE);
  62   }

 ----Unchanged portion omitted----