summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjoe <joe@61a7d7f5-40b7-0310-9c16-bb0ea8cb1845>2009-12-30 21:29:30 +0000
committerjoe <joe@61a7d7f5-40b7-0310-9c16-bb0ea8cb1845>2009-12-30 21:29:30 +0000
commitf40c8834766e41dca54947beb919e8b49c778351 (patch)
tree03d98de43eb64b3055d76f0aa24f5672780f1370
parente87f4900c7b4801b71e47600f71e78d14f698744 (diff)
downloadneon-f40c8834766e41dca54947beb919e8b49c778351.tar.gz
Merge r1748 from trunk:
Clear sspi_token buffer after each request. * src/ne_auth.c (request_sspi): Return NULL if sspi_token is not present. * src/ne_auth.c (ah_post_send): Clear the buffered sspi_token. Submitted by: Danil Shopyrin <danil visualsvn.com> git-svn-id: http://svn.webdav.org/repos/projects/neon/branches/0.29.x@1772 61a7d7f5-40b7-0310-9c16-bb0ea8cb1845
-rw-r--r--src/ne_auth.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/ne_auth.c b/src/ne_auth.c
index d32d52e..ba6f0ec 100644
--- a/src/ne_auth.c
+++ b/src/ne_auth.c
@@ -604,7 +604,10 @@ static int verify_negotiate_response(struct auth_request *req, auth_session *ses
#ifdef HAVE_SSPI
static char *request_sspi(auth_session *sess, struct auth_request *request)
{
- return ne_concat(sess->protocol->name, " ", sess->sspi_token, "\r\n", NULL);
+ if (sess->sspi_token)
+ return ne_concat(sess->protocol->name, " ", sess->sspi_token, "\r\n", NULL);
+ else
+ return NULL;
}
static int sspi_challenge(auth_session *sess, int attempt,
@@ -1464,6 +1467,14 @@ static int ah_post_send(ne_request *req, void *cookie, const ne_status *status)
}
#endif
+#ifdef HAVE_SSPI
+ /* whatever happens: forget the SSPI token cached thus far */
+ if (sess->sspi_token) {
+ ne_free(sess->sspi_token);
+ sess->sspi_token = NULL;
+ }
+#endif
+
NE_DEBUG(NE_DBG_HTTPAUTH,
"ah_post_send (#%d), code is %d (want %d), %s is %s\n",
areq->attempt, status->code, sess->spec->status_code,