]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - utils/gssd/context.c
gssd: Fix double free when exporting lucid context
[nfs-utils.git] / utils / gssd / context.c
index 02d162f2aa620a3c5fde2f9cf9fde7f9ce4c1544..7757a7700d14dd7fbe07f9878d6d79f514467156 100644 (file)
   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
-#include "config.h"
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif /* HAVE_CONFIG_H */
+
 #include <stdio.h>
 #include <syslog.h>
 #include <string.h>
 #include "context.h"
 
 int
-serialize_context_for_kernel(gss_ctx_id_t ctx, gss_buffer_desc *buf)
+serialize_context_for_kernel(gss_ctx_id_t *ctx,
+                            gss_buffer_desc *buf,
+                            gss_OID mech,
+                            int32_t *endtime)
 {
-       gss_union_ctx_id_t      uctx = (gss_union_ctx_id_t)ctx;
-
-       if (g_OID_equal(&krb5oid, uctx->mech_type))
-               return serialize_krb5_ctx(uctx->internal_ctx_id, buf);
-#ifdef HAVE_SPKM3_H
-       else if (g_OID_equal(&spkm3oid, uctx->mech_type))
-               return serialize_spkm3_ctx(uctx, buf);
-#endif
+       if (g_OID_equal(&krb5oid, mech))
+               return serialize_krb5_ctx(ctx, buf, endtime);
        else {
                printerr(0, "ERROR: attempting to serialize context with "
-                               "unknown mechanism oid\n");
+                               "unknown/unsupported mechanism oid\n");
                return -1;
        }
 }