Udiff g_unseal.c
--- /net/etna.eng/build7/semery/mit2/webrev/usr/src/lib/libgss/g_unseal.c-      Wed Sep  8 17:01:12 2004
+++ g_unseal.c  Wed Sep  8 13:42:05 2004
@@ -1,11 +1,11 @@
 /*
  * Copyright (c) 1996,1997, by Sun Microsystems, Inc.
  * All rights reserved.
  */
 
-#pragma ident  "@(#)g_unseal.c 1.14    04/09/08 SMI"
+#pragma ident  "@(#)g_unseal.c 1.13    98/01/22 SMI"
 
 /*
  *  glue routine gss_unseal
  */
 
@@ -30,15 +30,26 @@
 /* EXPORT DELETE START */
        OM_uint32               status;
        gss_union_ctx_id_t      ctx;
        gss_mechanism           mech;
 
-       g_initialize();
+       if (minor_status == NULL)
+               return (GSS_S_CALL_INACCESSIBLE_WRITE);
+       *minor_status = 0;
 
        if (context_handle == GSS_C_NO_CONTEXT)
-               return GSS_C_NO_CONTEXT;
+               return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_NO_CONTEXT);
 
+       if (GSS_EMPTY_BUFFER(input_message_buffer))
+               return (GSS_S_CALL_INACCESSIBLE_READ);
+
+       if (output_message_buffer == NULL)
+               return (GSS_S_CALL_INACCESSIBLE_WRITE);
+
+       output_message_buffer->length = 0;
+       output_message_buffer->value = NULL;
+
        /*
         * select the approprate underlying mechanism routine and
         * call it.
         */
 
@@ -54,18 +65,18 @@
                                                input_message_buffer,
                                                output_message_buffer,
                                                conf_state,
                                                qop_state);
                else
-                       status = GSS_S_BAD_BINDINGS;
+                       status = GSS_S_UNAVAILABLE;
 
                return (status);
        }
 
 /* EXPORT DELETE END */
 
-       return (GSS_S_NO_CONTEXT);
+       return (GSS_S_BAD_MECH);
 }
 
 OM_uint32
 gss_unwrap(minor_status,
                context_handle,
@@ -73,16 +84,16 @@
                output_message_buffer,
                conf_state,
                qop_state)
 
 OM_uint32 *            minor_status;
-gss_ctx_id_t           context_handle;
-gss_buffer_t           input_message_buffer;
+const gss_ctx_id_t     context_handle;
+const gss_buffer_t     input_message_buffer;
 gss_buffer_t           output_message_buffer;
 int *                  conf_state;
 gss_qop_t *            qop_state;
 
 {
-       return (gss_unseal(minor_status, context_handle,
-                               input_message_buffer, output_message_buffer,
-                               conf_state, (int *) qop_state));
+       return (gss_unseal(minor_status, (gss_ctx_id_t)context_handle,
+                       (gss_buffer_t)input_message_buffer,
+                       output_message_buffer, conf_state, (int *) qop_state));
 }