From 16a946691c1d9bf71298e9e161f81b1a07cbd05e Mon Sep 17 00:00:00 2001 From: Tadas V Date: Wed, 14 Feb 2018 13:09:06 +0200 Subject: [PATCH] Fix regexp failing on multidigit client ids --- openvpn/middlewares/server/auth/middleware.go | 4 ++-- .../middlewares/server/auth/middleware_test.go | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/openvpn/middlewares/server/auth/middleware.go b/openvpn/middlewares/server/auth/middleware.go index ba8c7eba3..67d1b97aa 100644 --- a/openvpn/middlewares/server/auth/middleware.go +++ b/openvpn/middlewares/server/auth/middleware.go @@ -44,7 +44,7 @@ func (m *middleware) Stop() error { func (m *middleware) checkReAuth(line string) (cont bool, consumed bool, err error) { - rule, err := regexp.Compile("^>CLIENT:REAUTH,(\\d),(\\d)$") + rule, err := regexp.Compile("^>CLIENT:REAUTH,(\\d+),(\\d+)$") if err != nil { return false, false, err } @@ -62,7 +62,7 @@ func (m *middleware) checkReAuth(line string) (cont bool, consumed bool, err err func (m *middleware) checkConnect(line string) (cont bool, consumed bool, err error) { - rule, err := regexp.Compile("^>CLIENT:CONNECT,(\\d),(\\d)$") + rule, err := regexp.Compile("^>CLIENT:CONNECT,(\\d+),(\\d+)$") if err != nil { return false, false, err } diff --git a/openvpn/middlewares/server/auth/middleware_test.go b/openvpn/middlewares/server/auth/middleware_test.go index 7ddcb2e70..94c6c40e5 100644 --- a/openvpn/middlewares/server/auth/middleware_test.go +++ b/openvpn/middlewares/server/auth/middleware_test.go @@ -210,3 +210,18 @@ func Test_ConsumeLineAuthFalseChecker(t *testing.T) { assert.True(t, fas.called) assert.False(t, fas.authenticated) } + +func TestMiddlewareConsumesClientIdsAntKeysWithSeveralDigits(t *testing.T) { + var tests = []string{ + ">CLIENT:CONNECT,115,23", + ">CLIENT:REAUTH,11,27", + } + + fas := newFakeAuthenticatorStub() + middleware := NewMiddleware(fas.fakeAuthenticator) + for _, testLine := range tests { + consumed, err := middleware.ConsumeLine(testLine) + assert.NoError(t, err, testLine) + assert.Equal(t, true, consumed, testLine) + } +}