e9114c66e7
- Add fix for CUPS problem, fixes bug #453951
72 lines
2.4 KiB
Diff
72 lines
2.4 KiB
Diff
From 1ee1e8306f3578c19fe015145eb8da1013f7b820 Mon Sep 17 00:00:00 2001
|
|
From: Jeremy Allison <jra@samba.org>
|
|
Date: Thu, 7 Aug 2008 17:56:50 -0700
|
|
Subject: [PATCH] Fix bug #5675 with a varient of Tim Waugh's patch,
|
|
as proposed by James Peach.
|
|
Jeremy.
|
|
|
|
---
|
|
source/client/smbspool.c | 2 +-
|
|
source/include/client.h | 1 +
|
|
source/libsmb/cliconnect.c | 5 ++---
|
|
3 files changed, 4 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/source/client/smbspool.c b/source/client/smbspool.c
|
|
index e567ef8..f35a9d3 100644
|
|
--- a/source/client/smbspool.c
|
|
+++ b/source/client/smbspool.c
|
|
@@ -347,7 +347,7 @@ get_exit_code(struct cli_state * cli,
|
|
}
|
|
|
|
if (cli) {
|
|
- if (cli->use_kerberos || (cli->capabilities & CAP_EXTENDED_SECURITY))
|
|
+ if (cli->use_kerberos && cli->got_kerberos_mechanism)
|
|
fputs("ATTR: auth-info-required=negotiate\n", stderr);
|
|
else
|
|
fputs("ATTR: auth-info-required=username,password\n", stderr);
|
|
diff --git a/source/include/client.h b/source/include/client.h
|
|
index 0e73745..833f4b4 100644
|
|
--- a/source/include/client.h
|
|
+++ b/source/include/client.h
|
|
@@ -184,6 +184,7 @@ struct cli_state {
|
|
bool use_kerberos;
|
|
bool fallback_after_kerberos;
|
|
bool use_spnego;
|
|
+ bool got_kerberos_mechanism; /* Server supports krb5 in SPNEGO. */
|
|
|
|
bool use_oplocks; /* should we use oplocks? */
|
|
bool use_level_II_oplocks; /* should we use level II oplocks? */
|
|
diff --git a/source/libsmb/cliconnect.c b/source/libsmb/cliconnect.c
|
|
index 632d910..5993cd3 100644
|
|
--- a/source/libsmb/cliconnect.c
|
|
+++ b/source/libsmb/cliconnect.c
|
|
@@ -797,7 +797,6 @@ ADS_STATUS cli_session_setup_spnego(struct cli_state *cli, const char *user,
|
|
char *principal = NULL;
|
|
char *OIDs[ASN1_MAX_OIDS];
|
|
int i;
|
|
- bool got_kerberos_mechanism = False;
|
|
DATA_BLOB blob;
|
|
const char *p = NULL;
|
|
char *account = NULL;
|
|
@@ -832,7 +831,7 @@ ADS_STATUS cli_session_setup_spnego(struct cli_state *cli, const char *user,
|
|
DEBUG(3,("got OID=%s\n", OIDs[i]));
|
|
if (strcmp(OIDs[i], OID_KERBEROS5_OLD) == 0 ||
|
|
strcmp(OIDs[i], OID_KERBEROS5) == 0) {
|
|
- got_kerberos_mechanism = True;
|
|
+ cli->got_kerberos_mechanism = True;
|
|
}
|
|
free(OIDs[i]);
|
|
}
|
|
@@ -845,7 +844,7 @@ ADS_STATUS cli_session_setup_spnego(struct cli_state *cli, const char *user,
|
|
/* If password is set we reauthenticate to kerberos server
|
|
* and do not store results */
|
|
|
|
- if (got_kerberos_mechanism && cli->use_kerberos) {
|
|
+ if (cli->got_kerberos_mechanism && cli->use_kerberos) {
|
|
ADS_STATUS rc;
|
|
|
|
if (pass && *pass) {
|
|
--
|
|
1.5.5.1
|
|
|