FR 3.0.12 exec_perl: ERROR: Failed to create pair &request:EAP-Message

Thor Spruyt thor.spruyt at telenet.be
Sun Jun 4 02:34:24 CEST 2017


Unfortunately, also with v3.0.14 the problem seems to be there, although the error message is slightly different ...

(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'} -> '0x0205024819800000023e1603030206100002020200180326c978bbd15ef07089d5ab8bc9d6f0ef586dded8142e2b765df12ed496d949de19467445830a97bedaa533a0b04b8e3acfb548c5c21ed685dd318d1ecde553b071b540f84de2b2d3d4abd383c50a24d97990bdd74bde45250a2c314cf599ee429b2dc2713d7e91bf654235cc5f111d90258c0f143dd7aa07f3062d1a4b0b6b9b584c0eab0366472ff366ce0de7101c7aa9287ef2a6eb3527a3b811e66867ea79db089ed13005416bdcf6d8f4334a13adcff49eeb3caae0e1fdab59092f4e75b2b78b80fd87cb19642b53a24432eda80267eb65302928001777f718809b33074405eb1b1c0f82d657a36c4c0f64eb0aa1145711d0fc1c5ac8692472988839a7ad465fca137a03fbef5898b864b3a0e3bd29641d5327fd38369cbcd2c85ea53fd66e76e701d5b35a894aa34f77bd85beb753173ab36e3f0521997c464f690fd59194b883d09fba327dc42c6c0820d2bdcf3e5e214599056de278fcb0f13b3effdbe626f4c9e0168c57455dbc64d479f00f9d6fc914810d8a03e76493924beaeee88d6d8f3e6f286b5464a9a1fb1a89c2735732984503b1f6696e78815d19ee6efd3ba6d09f0f2b936c1c4ef2ce9a72f941606e5c82eea9cb88af837b79ab2170b957a6c55b98b9e3d05d2ba778cc6c90d6f2beac20059000f6e9adfae12a1811c36e734a420a8b6b'
(7961)     [exec_perl] = noop
(7961)   } # authorize = ok
(7961) Proxying request to home server ... timeout 5.000000
(7961) Sent Access-Request Id 210 ... length 249
(7961)   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 ?

If I remove the "concat" from the EAP-Message attribute in the dictionary, then it works!

(9411) Received Access-Request Id 135 ... length 770
(9411)   EAP-Message = 0x02060250198000000246160301020610000202020071def3e123a0d39f7e0e0b3d63db878d3619a4b0bd64577a2971622958a765dad49388574562da2879698ecb451925923bd6eb187dd779d177ec16ed4f43c74070eeab77a7179925e27432acc54d347b00a1f018c8767c8d3d2fcb34a2846f0e7b13
(9411)   EAP-Message = 0x4154f8d66b565876cd48a207c266e2b6a5118b4381b734c6ad0eef3b1b504f641ae35ead9cfac5ed0963edc97b5384e8b7812fb4aa06db3e199f456ddfdea0df6e3741321f8b815b0d580ffd6b148d69dc36b59612c0fc1382733d01cebd7460106021dd8cf99299bd8ff7c59be3292ee233efe76f4aa2
(9411)   EAP-Message = 0x9e20b49d4edd2419cbce1f01f388dcbdf461b51df6c7f470275146140301000101160301003040923dd99bfb21c5eedad62f213ae486b977b292f528acc59956128674b9f25322b8d92699fd6eb758221e4448e572ca
(9411)   authorize {
(9411)     [preprocess] = ok
(9411) exec_perl: &request:EAP-Message += $RAD_REQUEST{'EAP-Message'} -> '0x02060250198000000246160301020610000202020071def3e123a0d39f7e0e0b3d63db878d3619a4b0bd64577a2971622958a765dad49388574562da2879698ecb451925923bd6eb187dd779d177ec16ed4f43c74070eeab77a7179925e27432acc54d347b00a1f018c8767c8d3d2fcb34a2846f0e7b13672deac9cbae52d0725077be905d0ff02a0650836932199efbd1a7c3dcb43f9f251f66581f40f51b63feb2e776fa3b47135026ca929bdb3ab454ef3356424baa06dc98d80200127c8aca7b0b024f4c1b9ccbc49d75fa944967e4d39418f2c2a9fb7340299c9c5ea93267322b9f2f016fb922507febf9012899db25b242661ae8df7d8e6ab88b'
(9411) exec_perl: &request:EAP-Message += $RAD_REQUEST{'EAP-Message'} -> '0x4154f8d66b565876cd48a207c266e2b6a5118b4381b734c6ad0eef3b1b504f641ae35ead9cfac5ed0963edc97b5384e8b7812fb4aa06db3e199f456ddfdea0df6e3741321f8b815b0d580ffd6b148d69dc36b59612c0fc1382733d01cebd7460106021dd8cf99299bd8ff7c59be3292ee233efe76f4aa28a3c80c84d427b0b3d04d4cc8541aaab0a9be24f71488b804cad76cfe90c658f39bc35f1dc09245510092794f8799ae3e86c268f1fbbf21611a962d7134e25c87dc9996a0b1a66564c3a3d0ce9bcbe2260b03bc91682d892957feed7f83ac2de5f69c9efef9d88d8deef12c63e5aa94278ffc417838e874113ea2469c96828d31d6fd9f577c7'
(9411) exec_perl: &request:EAP-Message += $RAD_REQUEST{'EAP-Message'} -> '0x9e20b49d4edd2419cbce1f01f388dcbdf461b51df6c7f470275146140301000101160301003040923dd99bfb21c5eedad62f213ae486b977b292f528acc59956128674b9f25322b8d92699fd6eb758221e4448e572ca'
(9411)     [exec_perl] = noop
(9411)   } # authorize = ok
(9411) Proxying request to home server ... timeout 5.000000
(9411) Sent Access-Request Id 1 ... length 830
(9411)   EAP-Message += 0x02060250198000000246160301020610000202020071def3e123a0d39f7e0e0b3d63db878d3619a4b0bd64577a2971622958a765dad49388574562da2879698ecb451925923bd6eb187dd779d177ec16ed4f43c74070eeab77a7179925e27432acc54d347b00a1f018c8767c8d3d2fcb34a2846f0e7b13
(9411)   EAP-Message += 0x4154f8d66b565876cd48a207c266e2b6a5118b4381b734c6ad0eef3b1b504f641ae35ead9cfac5ed0963edc97b5384e8b7812fb4aa06db3e199f456ddfdea0df6e3741321f8b815b0d580ffd6b148d69dc36b59612c0fc1382733d01cebd7460106021dd8cf99299bd8ff7c59be3292ee233efe76f4aa2
(9411)   EAP-Message += 0x9e20b49d4edd2419cbce1f01f388dcbdf461b51df6c7f470275146140301000101160301003040923dd99bfb21c5eedad62f213ae486b977b292f528acc59956128674b9f25322b8d92699fd6eb758221e4448e572ca

I realize that this is not a good solution, but it works as a workaround since the perl module actually doesn't need the EAP-Message content anyway.


Thor




More information about the Freeradius-Users mailing list