summaryrefslogtreecommitdiffstats
path: root/src/appl
diff options
context:
space:
mode:
Diffstat (limited to 'src/appl')
-rw-r--r--src/appl/gssftp/ftpd/ChangeLog6
-rw-r--r--src/appl/gssftp/ftpd/ftpd.c9
2 files changed, 13 insertions, 2 deletions
diff --git a/src/appl/gssftp/ftpd/ChangeLog b/src/appl/gssftp/ftpd/ChangeLog
index 1759aa776..f33fae7ae 100644
--- a/src/appl/gssftp/ftpd/ChangeLog
+++ b/src/appl/gssftp/ftpd/ChangeLog
@@ -1,3 +1,9 @@
+Fri Mar 15 14:16:41 1996 Ezra Peisach <epeisach@kangaroo.mit.edu>
+
+ * ftpd.c (auth_data): Do not fail if last gss_service is not
+ present in keytab. If no services present, return a useful
+ minor error status.
+
Fri Mar 15 01:24:39 1996 Richard Basch <basch@lehman.com>
* configure.in, ftpd.c: Added shadow password support.
diff --git a/src/appl/gssftp/ftpd/ftpd.c b/src/appl/gssftp/ftpd/ftpd.c
index 6f3e9cf06..51bcfc137 100644
--- a/src/appl/gssftp/ftpd/ftpd.c
+++ b/src/appl/gssftp/ftpd/ftpd.c
@@ -1899,13 +1899,14 @@ char *data;
#ifdef GSSAPI
if (strcmp(temp_auth_type, "GSSAPI") == 0) {
int replied = 0;
+ int found = 0;
gss_cred_id_t server_creds;
gss_name_t client;
int ret_flags;
struct gss_channel_bindings_struct chan;
gss_buffer_desc name_buf;
gss_name_t server_name;
- OM_uint32 maj_stat, min_stat;
+ OM_uint32 maj_stat, min_stat, save_stat;
char localname[MAXHOSTNAMELEN];
char service_name[MAXHOSTNAMELEN+10];
char **service;
@@ -1961,12 +1962,16 @@ char *data;
maj_stat = gss_acquire_cred(&min_stat, server_name, 0,
GSS_C_NULL_OID_SET, GSS_C_ACCEPT,
&server_creds, NULL, NULL);
+ save_stat = min_stat;
(void) gss_release_name(&min_stat, &server_name);
if (maj_stat != GSS_S_COMPLETE)
continue;
+ found++;
}
- if (maj_stat != GSS_S_COMPLETE)
+
+ if (!found && (maj_stat != GSS_S_COMPLETE))
{
+ min_stat = save_stat;
reply_gss_error(501, maj_stat, min_stat,
"acquiring credentials");
syslog(LOG_ERR, "gssapi error acquiring credentials");