Last call for 1.1.3?
Michael Joosten
michael.joosten at c-lab.de
Tue Aug 22 17:43:52 CEST 2006
Michael Joosten wrote:
>
> 2) The last days I looked at EAP/TLS and the cert_issuer_check, there
> is a corresponding free() call missing in rlm_eap_tls.c:eaptls_detach().
> Hmmm. On a closer look, actually many of the module's module_config
> string or file name options are missing. Correct or bug?
> I think I patched most of them for my certificate "dissection" patch,
> shall I make a quick interim patch of only the eap_detach() part
> against CVS?
>
Done. Bug 385
> 3) It would be nice to apply my patch against the miscalculated
> EAP/TLS packet size (bug 383) 8-)
>
> Regards, Michael Joosten
>
Also attached. Made against 1.1.1, but I don't that matters.
Michael
-------------- next part --------------
--- radiusd/src/modules/rlm_eap/types/rlm_eap_tls/rlm_eap_tls.c- 2006-04-28 20:21:49.000000000 +0200
+++ radiusd/src/modules/rlm_eap/types/rlm_eap_tls/rlm_eap_tls.c 2006-08-22 16:53:29.000000000 +0200
@@ -449,15 +449,27 @@
if (conf) {
if (conf->dh_file) free(conf->dh_file);
conf->dh_file = NULL;
+ if (conf->CA_path) free(conf->CA_path);
+ conf->CA_path = NULL;
if (conf->certificate_file) free(conf->certificate_file);
conf->certificate_file = NULL;
if (conf->private_key_file) free(conf->private_key_file);
conf->private_key_file = NULL;
if (conf->private_key_password) free(conf->private_key_password);
conf->private_key_password = NULL;
+ if (conf->CA_file) free(conf->CA_file);
+ conf->CA_file = NULL;
if (conf->random_file) free(conf->random_file);
conf->random_file = NULL;
+ if (conf->check_cert_cn) free(conf->check_cert_cn);
+ conf->check_cert_cn = NULL;
+ if (conf->use_as_cert_cn) free(conf->use_as_cert_cn);
+ conf->check_cipher_list = NULL;
+ if (conf->check_cipher_list) free(conf->check_cipher_list);
+ conf->check_cipher_list = NULL;
+ if (conf->check_cert_issuer) free(conf->check_cert_issuer);
+ conf->check_cert_issuer = NULL;
free(inst->conf);
inst->conf = NULL;
}
-------------- next part --------------
diff -ru ../orig/freeradius-1.1.1/src/modules/rlm_eap/types/rlm_eap_tls/rlm_eap_tls.c ./src/modules/rlm_eap/types/rlm_eap_tls/rlm_eap_tls.c
--- ../orig/freeradius-1.1.1/src/modules/rlm_eap/types/rlm_eap_tls/rlm_eap_tls.c 2006-02-06 10:37:03.000000000 -0500
+++ ./src/modules/rlm_eap/types/rlm_eap_tls/rlm_eap_tls.c 2006-04-21 19:45:47.000000000 -0400
@@ -443,11 +459,25 @@
* tells us it's too big.
*/
ssn->offset = inst->conf->fragment_size;
+
+ /*
+ * Framed-MTU is the whole packet, so we cut off the
+ * EAPOW header (4 bytes) to be prepended by the NAS.
+ * NOTE: This does not account for other protocols and
+ * purposes like wired PPP, which has 8 bytes overhead.
+ */
vp = pairfind(handler->request->packet->vps, PW_FRAMED_MTU);
if (vp && ((vp->lvalue - 4) < ssn->offset)) {
ssn->offset = vp->lvalue - 4;
}
+ /*
+ * And even more for the EAP TLS header:
+ * code + id + length + type + flags + TLS len
+ * 1 + 1 + 2 + 1 + 1 + 4 = 10
+ */
+ ssn->offset -= 10;
+
handler->opaque = ((void *)ssn);
handler->free_opaque = session_free;
More information about the Freeradius-Devel
mailing list