X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=utils%2Fgssd%2Fgss_util.c;h=0e327b04d87250f6a037670aee825fb8db6887d5;hb=24d0b823f10f9cae2eba9b22fb830dd8dc3fb15a;hp=ee304cceb80a6bb27955424a9b07ab2c7d9d9060;hpb=544ed73d5ab27c1390833d5cf93b9585c151667d;p=nfs-utils.git diff --git a/utils/gssd/gss_util.c b/utils/gssd/gss_util.c index ee304cc..0e327b0 100644 --- a/utils/gssd/gss_util.c +++ b/utils/gssd/gss_util.c @@ -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) {