Last Modified: Jul 11, 2024
Affected Product(s):
BIG-IP Install/Upgrade, LTM
Known Affected Versions:
15.1.0, 15.1.0.1, 15.1.0.2, 15.1.0.3, 15.1.0.4, 15.1.0.5, 15.1.1, 15.1.2, 15.1.2.1, 15.1.3, 15.1.3.1, 15.1.4, 15.1.4.1, 15.1.5, 15.1.5.1, 15.1.6, 15.1.6.1, 15.1.7, 15.1.8, 15.1.8.1, 15.1.8.2, 15.1.9, 15.1.9.1, 15.1.10, 15.1.10.2, 15.1.10.3, 15.1.10.4
Opened: Nov 29, 2023 Severity: 3-Major
After upgrade from v14 to v15, an iRule containing the HTTP_REQUEST event containing HTTP::Path throws a TCL error when trying to process a non-valid HTTP request. 01220001:3: TCL error: /BPUB-DEV/bpub_route <HTTP_REQUEST> - ERR_VAL (line 2) invoked from within "HTTP::path" +++++++++++
iRule execution fails with a TCL error.
1) Use BIG-IP versions from v15 2) Use HTTP::Path in HTTP_REQUEST event in an iRule. 3) Send some non-valid HTTP REQUEST traffic from a client
1) Add "-normalized" command option to HTTP::path command. ltm rule /Common/test-rule-normalized { when HTTP_REQUEST { if { [HTTP::path -normalized] contains "test" } { HTTP::respond 200 -content "OK !!!\n" } else { HTTP::respond 200 -content "Hit \"else\" statement !!!\n" } } } Note: Adding "-normalized" command option may change the URI, so testing and verification before applying workaround on production environment is strongly recommended. 2) Use catch command in the iRule to see the error in ltm log. Ex: when HTTP_REQUEST { if {[HTTP::has_responded]} {return} catch { if {[class match [HTTP::path ] equals /BPUB-DEV/bpub_opns]}{ return } } catch_err if { $catch_err ne ""} { # log local0. "Catch_err: $catch_err" log local0. "HTTP Request: [HTTP::request]" drop } }
None