X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fptlrpc%2Fgss%2Fgss_null_mech.c;h=142438aa7023674ae877f142f3b97b2164b29341;hb=8ed5937d25e436add1d8a137c71e76303152b801;hp=e4c316df0999e0e2ee9c19075dbf15812eef67bc;hpb=2b294992edce5af7b79d4300ed3aa1ea6a8db850;p=fs%2Flustre-release.git diff --git a/lustre/ptlrpc/gss/gss_null_mech.c b/lustre/ptlrpc/gss/gss_null_mech.c index e4c316d..142438a 100644 --- a/lustre/ptlrpc/gss/gss_null_mech.c +++ b/lustre/ptlrpc/gss/gss_null_mech.c @@ -20,10 +20,11 @@ * GPL HEADER END */ /* - * Copyright (C) 2013, Trustees of Indiana University + * Copyright (C) 2013, 2015, Trustees of Indiana University * * Copyright (c) 2014, Intel Corporation. * + * Author: Jeremy Filizetti * Author: Andrew Korty */ @@ -44,6 +45,7 @@ #include "gss_asn1.h" struct null_ctx { + __u64 nc_token; }; static @@ -51,15 +53,20 @@ __u32 gss_import_sec_context_null(rawobj_t *inbuf, struct gss_ctx *gss_context) { struct null_ctx *null_context; - if (inbuf == NULL || inbuf->data == NULL) + if (inbuf == NULL || inbuf->data == NULL || + inbuf->len != sizeof(*null_context)) { + CDEBUG(D_SEC, "Invalid input buffer for null context\n"); return GSS_S_FAILURE; + } OBD_ALLOC_PTR(null_context); if (null_context == NULL) return GSS_S_FAILURE; + memcpy(&null_context->nc_token, inbuf->data, inbuf->len); + gss_context->internal_ctx_id = null_context; - CDEBUG(D_SEC, "succesfully imported null context\n"); + CDEBUG(D_SEC, "successfully imported null context\n"); return GSS_S_COMPLETE; } @@ -78,16 +85,17 @@ __u32 gss_copy_reverse_context_null(struct gss_ctx *gss_context_old, null_context_old = gss_context_old->internal_ctx_id; memcpy(null_context_new, null_context_old, sizeof(*null_context_new)); gss_context_new->internal_ctx_id = null_context_new; - CDEBUG(D_SEC, "succesfully copied reverse null context\n"); + CDEBUG(D_SEC, "successfully copied reverse null context\n"); return GSS_S_COMPLETE; } static __u32 gss_inquire_context_null(struct gss_ctx *gss_context, - unsigned long *endtime) + time64_t *endtime) { - *endtime = 0; + /* quick timeout for testing purposes */ + *endtime = ktime_get_real_seconds() + 60; return GSS_S_COMPLETE; } @@ -142,12 +150,29 @@ int gss_display_null(struct gss_ctx *gss_context, char *buf, int bufsize) return snprintf(buf, bufsize, "null"); } +static +__u32 gss_get_mic_null(struct gss_ctx *gss_context, int message_count, + rawobj_t *messages, int iov_count, struct bio_vec *iovs, + rawobj_t *token) +{ + return GSS_S_COMPLETE; +} + +static +__u32 gss_verify_mic_null(struct gss_ctx *gss_context, int message_count, + rawobj_t *messages, int iov_count, + struct bio_vec *iovs, + rawobj_t *token) +{ + return GSS_S_COMPLETE; +} + static struct gss_api_ops gss_null_ops = { .gss_import_sec_context = gss_import_sec_context_null, .gss_copy_reverse_context = gss_copy_reverse_context_null, .gss_inquire_context = gss_inquire_context_null, - .gss_get_mic = NULL, - .gss_verify_mic = NULL, + .gss_get_mic = gss_get_mic_null, + .gss_verify_mic = gss_verify_mic_null, .gss_wrap = gss_wrap_null, .gss_unwrap = gss_unwrap_null, .gss_prep_bulk = gss_prep_bulk_null, @@ -166,11 +191,8 @@ static struct subflavor_desc gss_null_sfs[] = { }, }; -/* - * currently we leave module owner NULL - */ static struct gss_api_mech gss_null_mech = { - .gm_owner = NULL, /*THIS_MODULE, */ + /* .gm_owner uses default NULL value for THIS_MODULE */ .gm_name = "gssnull", .gm_oid = (rawobj_t) { 12,