@@ -28,13 +28,21 @@ const gss_OID_desc gss_mech_spnego = {
28
28
6 , "\x2b\x06\x01\x05\x05\x02"
29
29
};
30
30
31
- const gss_OID_desc gss_mech_ntlmssp = {
31
+ #ifdef HAVE_GSSAPI_GSSAPI_NTLMSSP_H
32
+ const gss_OID_desc gss_mech_ntlmssp_desc = {
32
33
GSS_NTLMSSP_OID_LENGTH , GSS_NTLMSSP_OID_STRING
33
34
};
35
+ gss_const_OID gss_mech_ntlmssp = & gss_mech_ntlmssp_desc ;
34
36
35
- const gss_OID_set_desc gss_mech_set_ntlmssp = {
36
- 1 , discard_const (& gss_mech_ntlmssp )
37
+ const gss_OID_set_desc gss_mech_set_ntlmssp_desc = {
38
+ 1 , discard_const (& gss_mech_ntlmssp_desc )
37
39
};
40
+ gss_const_OID_set gss_mech_set_ntlmssp = & gss_mech_set_ntlmssp_desc ;
41
+
42
+ #else
43
+ gss_OID gss_mech_ntlmssp = GSS_C_NO_OID ;
44
+ gss_OID_set gss_mech_set_ntlmssp = GSS_C_NO_OID_SET ;
45
+ #endif
38
46
39
47
#define MOD_AUTH_GSSAPI_VERSION PACKAGE_NAME "/" PACKAGE_VERSION
40
48
@@ -292,10 +300,12 @@ static bool parse_auth_header(apr_pool_t *pool, const char **auth_header,
292
300
return true;
293
301
}
294
302
295
- static bool is_mech_allowed (gss_OID_set allowed_mechs , gss_const_OID mech ,
303
+ static bool is_mech_allowed (gss_OID_set allowed_mechs , gss_const_OID mech ,
296
304
bool multi_step_supported )
297
305
{
298
- if (!multi_step_supported && gss_oid_equal (& gss_mech_ntlmssp , mech ))
306
+ if (mech == GSS_C_NO_OID ) return false;
307
+
308
+ if (!multi_step_supported && gss_oid_equal (gss_mech_ntlmssp , mech ))
299
309
return false;
300
310
301
311
if (allowed_mechs == GSS_C_NO_OID_SET ) return true;
@@ -814,6 +824,7 @@ static int mag_auth(request_rec *req)
814
824
ba_user .value = ap_getword_nulls_nc (req -> pool ,
815
825
(char * * )& ba_pwd .value , ':' );
816
826
if (!ba_user .value ) goto done ;
827
+
817
828
if (((char * )ba_user .value )[0 ] == '\0' ||
818
829
((char * )ba_pwd .value )[0 ] == '\0' ) {
819
830
ap_log_rerror (APLOG_MARK , APLOG_ERR , 0 , req ,
@@ -835,7 +846,7 @@ static int mag_auth(request_rec *req)
835
846
break ;
836
847
837
848
case AUTH_TYPE_RAW_NTLM :
838
- if (!is_mech_allowed (desired_mechs , & gss_mech_ntlmssp ,
849
+ if (!is_mech_allowed (desired_mechs , gss_mech_ntlmssp ,
839
850
cfg -> gss_conn_ctx )) {
840
851
ap_log_rerror (APLOG_MARK , APLOG_DEBUG , 0 , req ,
841
852
"NTLM Authentication is not allowed!" );
@@ -846,7 +857,7 @@ static int mag_auth(request_rec *req)
846
857
goto done ;
847
858
}
848
859
849
- desired_mechs = discard_const (& gss_mech_set_ntlmssp );
860
+ desired_mechs = discard_const (gss_mech_set_ntlmssp );
850
861
break ;
851
862
852
863
default :
@@ -997,7 +1008,7 @@ static int mag_auth(request_rec *req)
997
1008
} else if (ret == HTTP_UNAUTHORIZED ) {
998
1009
apr_table_add (req -> err_headers_out , req_cfg -> rep_proto , "Negotiate" );
999
1010
1000
- if (is_mech_allowed (desired_mechs , & gss_mech_ntlmssp ,
1011
+ if (is_mech_allowed (desired_mechs , gss_mech_ntlmssp ,
1001
1012
cfg -> gss_conn_ctx )) {
1002
1013
apr_table_add (req -> err_headers_out , req_cfg -> rep_proto , "NTLM" );
1003
1014
}
@@ -1232,7 +1243,7 @@ static bool mag_list_of_mechs(cmd_parms *parms, gss_OID_set *oidset,
1232
1243
} else if (strcmp (w , "iakerb" ) == 0 ) {
1233
1244
oid = discard_const (gss_mech_iakerb );
1234
1245
} else if (strcmp (w , "ntlmssp" ) == 0 ) {
1235
- oid = discard_const (& gss_mech_ntlmssp );
1246
+ oid = discard_const (gss_mech_ntlmssp );
1236
1247
} else {
1237
1248
buf .value = discard_const (w );
1238
1249
buf .length = strlen (w );
0 commit comments