X-Git-Url: https://git.decadent.org.uk/gitweb/?p=nfs-utils.git;a=blobdiff_plain;f=utils%2Fgssd%2Fgss_util.c;h=2e6d40f0e7e128c06f632b666f3c91844fa87ef5;hp=ee304cceb80a6bb27955424a9b07ab2c7d9d9060;hb=93b62b6e62e3680cad1d400b1992f919f9914178;hpb=544ed73d5ab27c1390833d5cf93b9585c151667d diff --git a/utils/gssd/gss_util.c b/utils/gssd/gss_util.c index ee304cc..2e6d40f 100644 --- a/utils/gssd/gss_util.c +++ b/utils/gssd/gss_util.c @@ -95,7 +95,7 @@ /* Global gssd_credentials handle */ gss_cred_id_t gssd_creds; -gss_OID g_mechOid = GSS_C_NULL_OID;; +gss_OID g_mechOid = GSS_C_NULL_OID; #if 0 static void @@ -252,7 +252,8 @@ display_status_2(char *m, u_int32_t major, u_int32_t minor, const gss_OID mech) if (major == GSS_S_CREDENTIALS_EXPIRED) msg_verbosity = 1; - printerr(msg_verbosity, "ERROR: GSS-API: error in %s(): %s (%s) - %s(%s)\n", + + printerr(msg_verbosity, "ERROR: GSS-API: error in %s(): %s (%s) - %s\n", m, gss_display_error(major), maj, min); if (maj_gss_buf.length != 0) @@ -276,20 +277,25 @@ gssd_acquire_cred(char *server_name, const gss_OID oid) u_int32_t ignore_maj_stat, ignore_min_stat; gss_buffer_desc pbuf; - name.value = (void *)server_name; - name.length = strlen(server_name); + /* If server_name is NULL, get cred for GSS_C_NO_NAME */ + if (server_name == NULL) { + target_name = GSS_C_NO_NAME; + } else { + name.value = (void *)server_name; + name.length = strlen(server_name); - maj_stat = gss_import_name(&min_stat, &name, - oid, - &target_name); + maj_stat = gss_import_name(&min_stat, &name, + oid, + &target_name); - if (maj_stat != GSS_S_COMPLETE) { - pgsserr("gss_import_name", maj_stat, min_stat, g_mechOid); - return (FALSE); + if (maj_stat != GSS_S_COMPLETE) { + pgsserr("gss_import_name", maj_stat, min_stat, g_mechOid); + return (FALSE); + } } - maj_stat = gss_acquire_cred(&min_stat, target_name, 0, - GSS_C_NULL_OID_SET, GSS_C_ACCEPT, + maj_stat = gss_acquire_cred(&min_stat, target_name, GSS_C_INDEFINITE, + GSS_C_NO_OID_SET, GSS_C_ACCEPT, &gssd_creds, NULL, NULL); if (maj_stat != GSS_S_COMPLETE) {