From 4a6891275cb6a7ff508f6184c321010fbfc681d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Sun, 16 Mar 2003 19:40:18 +0000 Subject: [PATCH] (gss_adat): now that gss_export_name exports a principal, bandaid with gss_display_name, and check that oid is GSS_KRB5_NT_PRINCIPAL_NAME, also free memory git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@11793 ec53bebd-3082-4978-b11e-865c3cabbd6b --- appl/ftp/ftp/gssapi.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/appl/ftp/ftp/gssapi.c b/appl/ftp/ftp/gssapi.c index 174b8dfdf..191743540 100644 --- a/appl/ftp/ftp/gssapi.c +++ b/appl/ftp/ftp/gssapi.c @@ -214,18 +214,28 @@ gss_adat(void *app_data, void *buf, size_t len) if(maj_stat == GSS_S_COMPLETE){ char *name; gss_buffer_desc export_name; - maj_stat = gss_export_name(&min_stat, client_name, &export_name); + gss_OID oid; + + maj_stat = gss_display_name(&min_stat, client_name, + &export_name, &oid); if(maj_stat != 0) { - reply(500, "Error exporting name"); + reply(500, "Error displaying name"); + goto out; + } + /* XXX kerberos */ + if(oid != GSS_KRB5_NT_PRINCIPAL_NAME) { + reply(500, "OID not kerberos principal name"); + gss_release_buffer(&min_stat, &export_name); goto out; } name = realloc(export_name.value, export_name.length + 1); if(name == NULL) { reply(500, "Out of memory"); - free(export_name.value); + gss_release_buffer(&min_stat, &export_name); goto out; } name[export_name.length] = '\0'; + gss_release_buffer(&min_stat, &export_name); d->client_name = name; if(p) reply(235, "ADAT=%s", p);