Skip to content

Commit bd4e8c3

Browse files
authored
Merge pull request #124 from itglob/master
corrected Heimdal compatibility
2 parents c626163 + 6a88c45 commit bd4e8c3

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

ngx_http_auth_spnego_module.c

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,11 @@
6363
#define spnego_log_error(fmt, args...) \
6464
ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, fmt, ##args)
6565

66+
#ifndef krb5_realm_length
67+
#define krb5_realm_length(r) ((r).length)
68+
#define krb5_realm_data(r) ((r).data)
69+
#endif
70+
6671
/* Module handler */
6772
static ngx_int_t ngx_http_auth_spnego_handler(ngx_http_request_t *);
6873

@@ -1195,12 +1200,12 @@ static krb5_error_code ngx_http_auth_spnego_verify_server_credentials(
11951200
}
11961201

11971202
size_t tgs_principal_name_size =
1198-
(ngx_strlen(KRB5_TGS_NAME) + (principal->realm.length * 2) + 2) + 1;
1203+
(ngx_strlen(KRB5_TGS_NAME) + (krb5_realm_length(principal->realm) * 2) + 2) + 1;
11991204
tgs_principal_name = (char *)ngx_pcalloc(r->pool, tgs_principal_name_size);
12001205
ngx_snprintf((u_char *)tgs_principal_name, tgs_principal_name_size,
1201-
"%s/%*s@%*s", KRB5_TGS_NAME, principal->realm.length,
1202-
principal->realm.data, principal->realm.length,
1203-
principal->realm.data);
1206+
"%s/%*s@%*s", KRB5_TGS_NAME, krb5_realm_length(principal->realm),
1207+
krb5_realm_data(principal->realm), krb5_realm_length(principal->realm),
1208+
krb5_realm_data(principal->realm));
12041209

12051210
if ((kerr = krb5_parse_name(kcontext, tgs_principal_name,
12061211
&match_creds.server))) {
@@ -1341,13 +1346,13 @@ static ngx_int_t ngx_http_auth_spnego_obtain_server_credentials(
13411346
krb5_get_init_creds_opt_set_forwardable(&gicopts, 1);
13421347

13431348
size_t tgs_principal_name_size =
1344-
(ngx_strlen(KRB5_TGS_NAME) + (principal->realm.length * 2) + 2) + 1;
1349+
(ngx_strlen(KRB5_TGS_NAME) + (krb5_realm_length(principal->realm) * 2) + 2) + 1;
13451350
tgs_principal_name = (char *)ngx_pcalloc(r->pool, tgs_principal_name_size);
13461351

13471352
ngx_snprintf((u_char *)tgs_principal_name, tgs_principal_name_size,
1348-
"%s/%*s@%*s", KRB5_TGS_NAME, principal->realm.length,
1349-
principal->realm.data, principal->realm.length,
1350-
principal->realm.data);
1353+
"%s/%*s@%*s", KRB5_TGS_NAME, krb5_realm_length(principal->realm),
1354+
krb5_realm_data(principal->realm), krb5_realm_length(principal->realm),
1355+
krb5_realm_data(principal->realm));
13511356

13521357
kerr = krb5_get_init_creds_keytab(kcontext, &creds, principal, keytab, 0,
13531358
tgs_principal_name, &gicopts);

0 commit comments

Comments
 (0)