Udiff g_seal.c
--- /net/etna.eng/build7/semery/mit2/webrev/usr/src/lib/libgss/g_seal.c-        Wed Sep  8 17:01:10 2004
+++ g_seal.c    Wed Sep  8 13:42:04 2004
@@ -1,20 +1,20 @@
 /*
  * Copyright (c) 1996,1997, by Sun Microsystems, Inc.
  * All rights reserved.
  */
 
-#pragma ident  "@(#)g_seal.c   1.20    04/09/08 SMI"
+#pragma ident  "@(#)g_seal.c   1.19    98/04/21 SMI"
 
 /*
  *  glue routine for gss_seal
  */
 
 #include <mechglueP.h>
 
 /*ARGSUSED*/
-OM_uint32 INTERFACE
+OM_uint32
 gss_seal(minor_status,
                context_handle,
                conf_req_flag,
                qop_req,
                input_message_buffer,
@@ -26,22 +26,31 @@
 int                            conf_req_flag;
 int                            qop_req;
 gss_buffer_t                   input_message_buffer;
 int *                          conf_state;
 gss_buffer_t                   output_message_buffer;
-
 {
 /* EXPORT DELETE START */
 
        OM_uint32               status;
        gss_union_ctx_id_t      ctx;
        gss_mechanism           mech;
 
 
+       if (minor_status == NULL)
+               return (GSS_S_CALL_INACCESSIBLE_WRITE);
+       *minor_status = 0;
+
        if (context_handle == GSS_C_NO_CONTEXT)
-               return (GSS_S_NO_CONTEXT);
+               return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_NO_CONTEXT);
 
+       if (input_message_buffer == NULL)
+               return (GSS_S_CALL_INACCESSIBLE_READ);
+
+       if (output_message_buffer == NULL)
+               return (GSS_S_CALL_INACCESSIBLE_WRITE);
+
        /*
         * select the approprate underlying mechanism routine and
         * call it.
         */
 
@@ -58,20 +67,20 @@
                                                qop_req,
                                                input_message_buffer,
                                                conf_state,
                                                output_message_buffer);
                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 INTERFACE
+OM_uint32
 gss_wrap(minor_status,
                context_handle,
                conf_req_flag,
                qop_req,
                input_message_buffer,
@@ -85,54 +94,55 @@
 const gss_buffer_t             input_message_buffer;
 int *                          conf_state;
 gss_buffer_t                   output_message_buffer;
 
 {
-               return gss_seal(minor_status, context_handle, conf_req_flag,
-                               (int) qop_req, input_message_buffer, conf_state,
+       return gss_seal(minor_status, (gss_ctx_id_t)context_handle,
+                       conf_req_flag, (int) qop_req,
+                       (gss_buffer_t)input_message_buffer, conf_state,
                                output_message_buffer);
 }
 
 /*
  * New for V2
  */
-OM_uint32 INTERFACE
+OM_uint32
 gss_wrap_size_limit(minor_status, context_handle, conf_req_flag,
                                qop_req, req_output_size, max_input_size)
        OM_uint32               *minor_status;
        const gss_ctx_id_t      context_handle;
        int                     conf_req_flag;
        gss_qop_t               qop_req;
        OM_uint32               req_output_size;
        OM_uint32               *max_input_size;
 {
-       OM_uint32               status;
        gss_union_ctx_id_t      ctx;
        gss_mechanism           mech;
 
-       gss_initialize();
+       if (minor_status == NULL)
+               return (GSS_S_CALL_INACCESSIBLE_WRITE);
+       *minor_status = 0;
 
        if (context_handle == GSS_C_NO_CONTEXT)
-               return (GSS_S_NO_CONTEXT);
+               return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_NO_CONTEXT);
 
+       if (max_input_size == NULL)
+               return (GSS_S_CALL_INACCESSIBLE_WRITE);
+
        /*
         * select the approprate underlying mechanism routine and
         * call it.
         */
 
        ctx = (gss_union_ctx_id_t) context_handle;
        mech = __gss_get_mechanism(ctx->mech_type);
 
        if (!mech)
-               return (GSS_S_NO_CONTEXT);
+               return (GSS_S_BAD_MECH);
 
        if (!mech->gss_wrap_size_limit)
-               return (GSS_S_BAD_BINDINGS);
+               return (GSS_S_UNAVAILABLE);
 
-       status = mech->gss_wrap_size_limit(mech->context, minor_status,
-                                                       context_handle,
-                                                       conf_req_flag,
-                                                       qop_req,
-                                                       req_output_size,
-                                                       max_input_size);
-       return (status);
+       return (mech->gss_wrap_size_limit(mech->context, minor_status,
+                               ctx->internal_ctx_id, conf_req_flag, qop_req,
+                               req_output_size, max_input_size));
 }