Proxying EAP-TTLS requests via 2.1.0 to 1.1.7
Peter Eriksson
peter at ifm.liu.se
Tue Sep 30 13:59:47 CEST 2008
BINGO!
Found it. The bug is that function dict_addvendor() in src/lib/dict.c,
around line 440 is missing an initialization of dv->flags:
dv->flags = 0;
If I add that then the Windows PC client successfully connects to the
WLAN station and authenticates correctly...
- Peter
INGO!
> Notice the following that I feel are a bit 'suspect' that
> happens in the rad_vp2attr() function:
>
>
> 1. dv->flags=808989706
> 2. vp->attribute=20381713
>
> This is printed in the code around:
>
> /*
> * This must be an RFC-format attribute. If it
> * wasn't, then the "decode" function would have
> * made a Vendor-Specific attribute (i.e. type
> * 26), and we would have "vendorcode == 0" here.
> */
> if (dv) {
> vsa_tlen = dv->type;
> vsa_llen = dv->length;
> if (dv->flags) vsa_offset = 1;
> DEBUG("PETER: dv->flags=%d\n", dv->flags);
> }
>
> DEBUG("PETER: rad_vp2attr: vendorcode=%d, vsa_tlen=%d, vsa_llen=%d,
> vsa_offset=%d, vp->attribute=%d\n",
> vendorcode, vsa_tlen, vsa_llen, vsa_offset,
> vp->attribute);
>
>
> With dv->flags set to '808989706' then vsa_offset is set to 1, and then
> a bit down in the code this happens (notice the 'ptr[0] = 0x00;' - could
> this be where the mysterious 0x00-byte gets added?):
>
> if (vsa_offset) {
> /*
> * Allow TLV's to be encoded, if someone
> * manages to somehow encode the sub-tlv's.
> *
> * FIXME: Keep track of room in the packet!
> */
> if (vp->length > (254 - (ptr - start))) {
> DEBUG("PETER: rad_vp2attr: Calling rad_vp2continuation\n");
> return rad_vp2continuation(vp, start, ptr);
> }
>
> ptr[0] = 0x00;
> ptr++;
>
> /*
> * sub-TLV's can only be in one format.
> */
> if (vp->flags.is_tlv) {
> DEBUG("PETER: rad_vp2attr: vp->flags.is_tlv=%d\n",
> vp->flags.is_tlv);
>
> *(ptr++) = (vp->attribute & 0xff00) >> 8;
> tlv_length_ptr = ptr;
> *(ptr++) = 2;
> vsa_offset += 2;
>
>
>
>
> Output from the server when running with my DEBUG() calls added:
>
>
> Sending Access-Accept of id 5 to 192.168.160.158 port 2299
> MS-MPPE-Recv-Key =
> 0x3b7338c7c2942aa068f6b52ba9616e0b6daf553595483804575f70c3910b49e4
> PETER: rad_vp2attr: start=ffffffff7fffc344
> PETER: dv->flags=808989706
> PETER: rad_vp2attr: vendorcode=311, vsa_tlen=1, vsa_llen=1,
> vsa_offset=1, vp->attribute=20381713
> PETER: rad_vp2attr: vp->flags.has_tag=0, vp->flags.tag=0
> PETER: vp2data: offset=0, room=246, vp->length=32, vp->flags.encrypt=2
> PETER: make_tunnel_passwd: inlen=32, room=246
> PETER: make_tunnel_passwd: adjusted len=48
> MS-MPPE-Send-Key =
> 0x6a238a9b2f97d43cfef37c80bc88309fc843d571dd97316b3754d0dee7c8754a
> PETER: rad_vp2attr: start=ffffffff7fffc37f
> PETER: dv->flags=808989706
> PETER: rad_vp2attr: vendorcode=311, vsa_tlen=1, vsa_llen=1,
> vsa_offset=1, vp->attribute=20381712
> PETER: rad_vp2attr: vp->flags.has_tag=0, vp->flags.tag=0
> PETER: vp2data: offset=0, room=246, vp->length=32, vp->flags.encrypt=2
> PETER: make_tunnel_passwd: inlen=32, room=246
> PETER: make_tunnel_passwd: adjusted len=48
> EAP-Message = 0x03050004
> PETER: rad_vp2attr: start=ffffffff7fffc3ba
> PETER: rad_vp2attr: vendorcode=0
> PETER: rad_vp2attr: vp->flags.has_tag=0, vp->flags.tag=0
> PETER: vp2data: offset=0, room=253, vp->length=4, vp->flags.encrypt=0
> Message-Authenticator = 0x00000000000000000000000000000000
> PETER: rad_vp2attr: start=ffffffff7fffc3c0
> PETER: rad_vp2attr: vendorcode=0
> PETER: rad_vp2attr: vp->flags.has_tag=0, vp->flags.tag=0
> PETER: vp2data: offset=0, room=253, vp->length=16, vp->flags.encrypt=0
> User-Name = ""
> PETER: rad_vp2attr: start=ffffffff7fffc3d2
> PETER: rad_vp2attr: vendorcode=0
> PETER: rad_vp2attr: vp->flags.has_tag=0, vp->flags.tag=0
> PETER: vp2data: offset=0, room=253, vp->length=0, vp->flags.encrypt=0
> PETER: rad_encode, packet data (162 bytes):
> 020500a26ac716ea68df22aa04b11b19748b4cd41a3b00000137113500812965b0fd4eab49fe3130
> a05e5c23ba80f7165b2f81fab9a798cdd4d42ec06e85496fe978b1ece15c4eb60342e59fca50781a3b000001371035008edb28255c56fbc717358e4599af
> b0ea6e99a802da0445c3d2ee12387d2ad9d31ce168bfeee5e3222881fd1d659ff1dcd3234f0603050004501200000000000000000000000000000000
> Tue Sep 30 11:20:36 2008 : Debug: Finished request 5.
>
>
> Ah well. Back to adding mot DEBUG() calls to locate what's going on...
>
> - Peter
> -
> List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html
More information about the Freeradius-Users
mailing list