Check that authtime is sane, From Andrew Bartlet
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@18951 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
		| @@ -268,9 +268,16 @@ main(int argc, char **argv) | ||||
|     loop(mechoid, nameoid, argv[0], &sctx, &cctx); | ||||
|      | ||||
|     if (gss_oid_equal(mechoid, GSS_KRB5_MECHANISM)) { | ||||
| 	time_t time; | ||||
| 	time_t time, skew; | ||||
| 	gss_buffer_desc authz_data; | ||||
| 	krb5_keyblock *keyblock; | ||||
| 	krb5_timestamp now; | ||||
| 	krb5_error_code ret; | ||||
|  | ||||
| 	ret = krb5_timeofday(_gsskrb5_context, &now); | ||||
| 	if (ret)  | ||||
| 		errx(1, "krb5_timeofday failed"); | ||||
| 	 | ||||
| 	/* client */ | ||||
| 	maj_stat = gss_krb5_export_lucid_sec_context(&min_stat, | ||||
| 						     &cctx, | ||||
| @@ -294,7 +301,7 @@ main(int argc, char **argv) | ||||
| 	if (maj_stat != GSS_S_COMPLETE) | ||||
| 	    errx(1, "gss_krb5_export_lucid_sec_context failed: %s", | ||||
| 		     gssapi_err(maj_stat, min_stat, mechoid)); | ||||
| 	maj_stat = gss_krb5_free_lucid_sec_context(&maj_stat, ctx); | ||||
| 	maj_stat = gss_krb5_free_lucid_sec_context(&min_stat, ctx); | ||||
| 	if (maj_stat != GSS_S_COMPLETE) | ||||
| 	    errx(1, "gss_krb5_free_lucid_sec_context failed: %s", | ||||
| 		     gssapi_err(maj_stat, min_stat, mechoid)); | ||||
| @@ -303,14 +310,22 @@ main(int argc, char **argv) | ||||
| 							     sctx, | ||||
| 							     &time); | ||||
| 	if (maj_stat != GSS_S_COMPLETE) | ||||
| 	    errx(1, "gss_krb5_extract_authtime_from_sec_context failed: %s", | ||||
| 	    errx(1, "gsskrb5_extract_authtime_from_sec_context failed: %s", | ||||
| 		     gssapi_err(maj_stat, min_stat, mechoid)); | ||||
|  | ||||
| 	skew = abs(time - now); | ||||
| 	if (skew > _gsskrb5_context->max_skew) { | ||||
| 	    errx(1, "gsskrb5_extract_authtime_from_sec_context failed: " | ||||
| 		 "time skew too great %llu > %llu",  | ||||
| 		 (unsigned long long)skew,  | ||||
| 		 (unsigned long long)krb5_get_time_wrap(_gsskrb5_context)); | ||||
| 	} | ||||
|  | ||||
|  	maj_stat = gsskrb5_extract_service_keyblock(&min_stat, | ||||
| 						    sctx, | ||||
| 						    &keyblock); | ||||
| 	if (maj_stat != GSS_S_COMPLETE) | ||||
| 	    errx(1, "gss_krb5_export_service_keyblock failed: %s", | ||||
| 	    errx(1, "gsskrb5_export_service_keyblock failed: %s", | ||||
| 		     gssapi_err(maj_stat, min_stat, mechoid)); | ||||
|  | ||||
| 	krb5_free_keyblock(_gsskrb5_context, keyblock); | ||||
| @@ -318,20 +333,24 @@ main(int argc, char **argv) | ||||
|  	maj_stat = gsskrb5_get_subkey(&min_stat, | ||||
| 				      sctx, | ||||
| 				      &keyblock); | ||||
| 	if (maj_stat != GSS_S_COMPLETE) | ||||
| 	    errx(1, "gss_krb5_get_subkey failed: %s", | ||||
| 	if (maj_stat != GSS_S_COMPLETE  | ||||
| 	    && (!(maj_stat == GSS_S_FAILURE && min_stat == GSS_KRB5_S_KG_NO_SUBKEY))) | ||||
| 	    errx(1, "gsskrb5_get_subkey failed: %s", | ||||
| 		     gssapi_err(maj_stat, min_stat, mechoid)); | ||||
|  | ||||
| 	krb5_free_keyblock(_gsskrb5_context, keyblock); | ||||
| 	if (maj_stat == GSS_S_COMPLETE) | ||||
| 	    krb5_free_keyblock(_gsskrb5_context, keyblock); | ||||
|  | ||||
|  	maj_stat = gsskrb5_get_initiator_subkey(&min_stat, | ||||
| 						sctx, | ||||
| 						&keyblock); | ||||
| 	if (maj_stat != GSS_S_COMPLETE) | ||||
| 	    errx(1, "gss_krb5_get_initiator_subkey failed: %s", | ||||
| 	if (maj_stat != GSS_S_COMPLETE  | ||||
| 	    && (!(maj_stat == GSS_S_FAILURE && min_stat == GSS_KRB5_S_KG_NO_SUBKEY))) | ||||
| 	    errx(1, "gsskrb5_get_initiator_subkey failed: %s", | ||||
| 		     gssapi_err(maj_stat, min_stat, mechoid)); | ||||
|  | ||||
| 	krb5_free_keyblock(_gsskrb5_context, keyblock); | ||||
| 	if (maj_stat == GSS_S_COMPLETE) | ||||
| 	    krb5_free_keyblock(_gsskrb5_context, keyblock); | ||||
|  | ||||
|  	maj_stat = gsskrb5_extract_authz_data_from_sec_context(&min_stat, | ||||
| 							       sctx, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Love Hörnquist Åstrand
					Love Hörnquist Åstrand