@@ -28,13 +28,21 @@ const gss_OID_desc gss_mech_spnego = {
2828 6 , "\x2b\x06\x01\x05\x05\x02"
2929};
3030
31- const gss_OID_desc gss_mech_ntlmssp = {
31+ #ifdef HAVE_GSSAPI_GSSAPI_NTLMSSP_H
32+ const gss_OID_desc gss_mech_ntlmssp_desc = {
3233 GSS_NTLMSSP_OID_LENGTH , GSS_NTLMSSP_OID_STRING
3334};
35+ gss_const_OID gss_mech_ntlmssp = & gss_mech_ntlmssp_desc ;
3436
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 )
3739};
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
3846
3947#define MOD_AUTH_GSSAPI_VERSION PACKAGE_NAME "/" PACKAGE_VERSION
4048
@@ -292,10 +300,12 @@ static bool parse_auth_header(apr_pool_t *pool, const char **auth_header,
292300 return true;
293301}
294302
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 ,
296304 bool multi_step_supported )
297305{
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 ))
299309 return false;
300310
301311 if (allowed_mechs == GSS_C_NO_OID_SET ) return true;
@@ -814,6 +824,7 @@ static int mag_auth(request_rec *req)
814824 ba_user .value = ap_getword_nulls_nc (req -> pool ,
815825 (char * * )& ba_pwd .value , ':' );
816826 if (!ba_user .value ) goto done ;
827+
817828 if (((char * )ba_user .value )[0 ] == '\0' ||
818829 ((char * )ba_pwd .value )[0 ] == '\0' ) {
819830 ap_log_rerror (APLOG_MARK , APLOG_ERR , 0 , req ,
@@ -835,7 +846,7 @@ static int mag_auth(request_rec *req)
835846 break ;
836847
837848 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 ,
839850 cfg -> gss_conn_ctx )) {
840851 ap_log_rerror (APLOG_MARK , APLOG_DEBUG , 0 , req ,
841852 "NTLM Authentication is not allowed!" );
@@ -846,7 +857,7 @@ static int mag_auth(request_rec *req)
846857 goto done ;
847858 }
848859
849- desired_mechs = discard_const (& gss_mech_set_ntlmssp );
860+ desired_mechs = discard_const (gss_mech_set_ntlmssp );
850861 break ;
851862
852863 default :
@@ -997,7 +1008,7 @@ static int mag_auth(request_rec *req)
9971008 } else if (ret == HTTP_UNAUTHORIZED ) {
9981009 apr_table_add (req -> err_headers_out , req_cfg -> rep_proto , "Negotiate" );
9991010
1000- if (is_mech_allowed (desired_mechs , & gss_mech_ntlmssp ,
1011+ if (is_mech_allowed (desired_mechs , gss_mech_ntlmssp ,
10011012 cfg -> gss_conn_ctx )) {
10021013 apr_table_add (req -> err_headers_out , req_cfg -> rep_proto , "NTLM" );
10031014 }
@@ -1232,7 +1243,7 @@ static bool mag_list_of_mechs(cmd_parms *parms, gss_OID_set *oidset,
12321243 } else if (strcmp (w , "iakerb" ) == 0 ) {
12331244 oid = discard_const (gss_mech_iakerb );
12341245 } else if (strcmp (w , "ntlmssp" ) == 0 ) {
1235- oid = discard_const (& gss_mech_ntlmssp );
1246+ oid = discard_const (gss_mech_ntlmssp );
12361247 } else {
12371248 buf .value = discard_const (w );
12381249 buf .length = strlen (w );
0 commit comments