diff --git a/Shorewall/Perl/Shorewall/Chains.pm b/Shorewall/Perl/Shorewall/Chains.pm
index 16dd684..1b531f6 100644
--- a/Shorewall/Perl/Shorewall/Chains.pm
+++ b/Shorewall/Perl/Shorewall/Chains.pm
@@ -4206,10 +4206,10 @@ sub do_length( $ ) {
 
     require_capability( 'LENGTH_MATCH' , 'A Non-empty LENGTH' , 's' );
 
-    fatal_error "Invalid LENGTH ($length)" unless $length =~/^(\d+)(:(\d+))$/;
+    fatal_error "Invalid LENGTH ($length)" unless $length =~/^(\d+)(:(\d+))?$/;
 
-    if ( supplied $3 ) {
-	fatal_error "First length must be < second length" unless $1 < $2;
+    if ( supplied $2 ) {
+	fatal_error "First length must be < second length" unless $1 < $3;
     }
 
     "-m length --length $length ";
