FR 3.0.12 exec_perl: ERROR: Failed to create pair &request:EAP-Message
Alan DeKok
aland at deployingradius.com
Sun Jun 4 15:43:10 CEST 2017
On Jun 3, 2017, at 8:34 PM, Thor Spruyt <thor.spruyt at telenet.be> wrote:
>
> Unfortunately, also with v3.0.14 the problem seems to be there, although the error message is slightly different ...
I don't think you're running 3.0.14.
> (7961) Received Access-Request Id 208 ... length 779
> (7961) EAP-Message = 0x0205024819800000023e1603030206100002020200180326c978bbd15ef07089d5ab8bc9d6f0ef586dded8142e2b765df12ed496d949de19467445830a97bedaa533a0b04b8e3acfb548c5c21ed685dd318d1ecde553b071b540f84de2b2d3d4abd383c50a24d97990bdd74bde45250a2c314cf599ee42
> (7961) authorize {
> (7961) [preprocess] = ok
> (7961) exec_perl: ERROR: Failed to create pair - Length of Hex String is not even, got 1021 bytes
> (7961) exec_perl: ERROR: &request:EAP-Message = $RAD_REQUEST{'EAP-Message'} ->
That message is when it's trying to convert the Perl variable to a FreeRADIUS attribute.
What's missing is the initial message which shows it converting the FreeRADIUS attribute to a Perl variable:
len = vp_prints_value(buffer, sizeof(buffer), vp, 0);
RDEBUG("$%s{'%s'} = &%s:%s -> '%s'", hash_name, vp->da->name,
i.e. there should be a debug message saying:
$RAD_REQUEST{'EAP-Message'} = &request:EAP-Message -> 0x....
> What I find strange is that the request packet dump says there's only one EAP-Message attribute in the request (I assume only the first one is printed) while rlm_perl tries to put 510 bytes into $RAD_REQUEST{'EAP-Message'}/
> Note the debug output where it says "got 1021 bytes" => I guess this is 1021 characters instead of bytes ?
It's bytes. The printed string isn't being terminated for some reason.
> If I remove the "concat" from the EAP-Message attribute in the dictionary, then it works!
Yes, because the input EAP-Message becomes shorter.
I really think you're not running 3.0.14.
Alan DeKok.
More information about the Freeradius-Users
mailing list