freebsd-ports/www/nginx-devel/files/extra-patch-ngx_http_auth_spnego_module.c
Sergey A. Osokin 0019e69cb9 www/nginx-devel: fix segfaults in the third-party spnego module
Reported by:	pluknet
Patch from:	pluknet

Bump PORTREVISION.
2022-07-14 09:04:34 -04:00

52 lines
2.3 KiB
C

--- ../spnego-http-auth-nginx-module-c626163/ngx_http_auth_spnego_module.c.orig
+++ ../spnego-http-auth-nginx-module-c626163/ngx_http_auth_spnego_module.c
@@ -502,6 +502,7 @@ ngx_http_auth_spnego_headers_basic_only(ngx_http_request_t *r,
}
r->headers_out.www_authenticate->hash = 1;
+ r->headers_out.www_authenticate->next = NULL;
r->headers_out.www_authenticate->key.len = sizeof("WWW-Authenticate") - 1;
r->headers_out.www_authenticate->key.data = (u_char *)"WWW-Authenticate";
r->headers_out.www_authenticate->value.len = value.len;
@@ -538,6 +539,7 @@ ngx_http_auth_spnego_headers(ngx_http_request_t *r,
}
r->headers_out.www_authenticate->hash = 1;
+ r->headers_out.www_authenticate->next = NULL;
r->headers_out.www_authenticate->key.len = sizeof("WWW-Authenticate") - 1;
r->headers_out.www_authenticate->key.data = (u_char *)"WWW-Authenticate";
r->headers_out.www_authenticate->value.len = value.len;
@@ -559,6 +561,7 @@ ngx_http_auth_spnego_headers(ngx_http_request_t *r,
}
r->headers_out.www_authenticate->hash = 2;
+ r->headers_out.www_authenticate->next = NULL;
r->headers_out.www_authenticate->key.len =
sizeof("WWW-Authenticate") - 1;
r->headers_out.www_authenticate->key.data =
@@ -758,6 +761,12 @@ ngx_http_auth_spnego_store_delegated_creds(ngx_http_request_t *r,
char *ccname = NULL;
char *escaped = NULL;
+ if ((kerr = krb5_init_context(&kcontext))) {
+ spnego_log_error("Kerberos error: Cannot initialize kerberos context");
+ spnego_log_krb5_error(kcontext, kerr);
+ goto done;
+ }
+
if (!delegated_creds.data) {
spnego_log_error(
"ngx_http_auth_spnego_store_delegated_creds() NULL credentials");
@@ -766,12 +775,6 @@ ngx_http_auth_spnego_store_delegated_creds(ngx_http_request_t *r,
goto done;
}
- if ((kerr = krb5_init_context(&kcontext))) {
- spnego_log_error("Kerberos error: Cannot initialize kerberos context");
- spnego_log_krb5_error(kcontext, kerr);
- goto done;
- }
-
if ((kerr = krb5_parse_name(kcontext, (char *)principal_name->data,
&principal))) {
spnego_log_error("Kerberos error: Cannot parse principal %s",