summaryrefslogtreecommitdiffstats
path: root/proxy/src
diff options
context:
space:
mode:
Diffstat (limited to 'proxy/src')
-rw-r--r--proxy/src/mechglue/gpm_display_status.c18
-rw-r--r--proxy/src/mechglue/gssapi_gpm.h1
2 files changed, 19 insertions, 0 deletions
diff --git a/proxy/src/mechglue/gpm_display_status.c b/proxy/src/mechglue/gpm_display_status.c
index 7f8f247..cc5e3cc 100644
--- a/proxy/src/mechglue/gpm_display_status.c
+++ b/proxy/src/mechglue/gpm_display_status.c
@@ -45,6 +45,24 @@ void gpm_save_status(gssx_status *status)
}
}
+/* This funciton is used to record internal mech errors that are
+ * generated by the proxy client code */
+void gpm_save_internal_status(uint32_t err, char *err_str)
+{
+ gssx_status status;
+
+ memset(&status, 0, sizeof(gssx_status));
+
+#define STD_MAJ_ERROR_STR "Internal gssproxy error"
+ status.major_status = GSS_S_FAILURE;
+ status.major_status_string.utf8string_val = STD_MAJ_ERROR_STR;
+ status.major_status_string.utf8string_len = sizeof(STD_MAJ_ERROR_STR);
+ status.minor_status = err;
+ status.minor_status_string.utf8string_val = err_str;
+ status.minor_status_string.utf8string_len = strlen(err_str) + 1;
+ gpm_save_status(&status);
+}
+
OM_uint32 gpm_display_status(OM_uint32 *minor_status,
OM_uint32 status_value,
int status_type,
diff --git a/proxy/src/mechglue/gssapi_gpm.h b/proxy/src/mechglue/gssapi_gpm.h
index 0974bfd..f4faf3f 100644
--- a/proxy/src/mechglue/gssapi_gpm.h
+++ b/proxy/src/mechglue/gssapi_gpm.h
@@ -46,6 +46,7 @@ OM_uint32 gpm_release_buffer(OM_uint32 *minor_status,
gss_buffer_t buffer);
void gpm_save_status(gssx_status *status);
+void gpm_save_internal_status(uint32_t err, char *err_str);
OM_uint32 gpm_display_status(OM_uint32 *minor_status,
OM_uint32 status_value,