From 60774cd9cae39ed1e1f37d6725e37da51a684014 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Oudot?= Date: Thu, 10 Jan 2013 12:32:56 +0000 Subject: [PATCH] Fix Apache Filter for POST data (#551) --- .../lib/Lemonldap/NG/Handler/Simple.pm | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Simple.pm b/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Simple.pm index 9c575ee8a..bf1779359 100644 --- a/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Simple.pm +++ b/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Simple.pm @@ -1553,15 +1553,25 @@ sub postFilter { unless ( $f->ctx ) { $f->ctx(1); + + # Create the transformed form data my $u = URI->new('http:'); $u->query_form( { $class->safe->reval($data) } ); my $s = $u->query(); + + # Eat all fake data sent by client $l = $f->r->headers_in->{'Content-Length'}; + while ( $f->read( my $b, $l ) ) { } + + # Send to application real data $f->r->headers_in->set( 'Content-Length' => length($s) ); $f->r->headers_in->set( 'Content-Type' => 'application/x-www-form-urlencoded' ); $f->print($s); - while ( $f->read( my $b, $l ) ) { } + + $class->lmLog( "Send POST data $s", 'debug' ); + + # Mark this filter as done $f->seen_eos(1); } return OK;