From c135ce3c612e859f068318badcf4aa0b6142f990 Mon Sep 17 00:00:00 2001 From: aler9 <46489434+aler9@users.noreply.github.com> Date: Thu, 9 Jul 2020 22:30:18 +0200 Subject: [PATCH] header-auth: fix decoding of empty fields --- header-auth.go | 2 +- header-auth_test.go | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/header-auth.go b/header-auth.go index 5ead0a62..e030af2a 100644 --- a/header-auth.go +++ b/header-auth.go @@ -13,7 +13,7 @@ type HeaderAuth struct { Values map[string]string } -var regHeaderAuthKeyValue = regexp.MustCompile("^([a-z]+)=(\"(.+?)\"|([a-zA-Z0-9]+))(, *|$)") +var regHeaderAuthKeyValue = regexp.MustCompile("^([a-z]+)=(\"(.*?)\"|([a-zA-Z0-9]+))(, *|$)") // ReadHeaderAuth parses an Authenticate or a WWW-Authenticate header. func ReadHeaderAuth(in string) (*HeaderAuth, error) { diff --git a/header-auth_test.go b/header-auth_test.go index 483a910b..3b525a57 100644 --- a/header-auth_test.go +++ b/header-auth_test.go @@ -63,7 +63,7 @@ var casesHeaderAuth = []struct { }, }, { - "digest response", + "digest response 1", `Digest username="aa", realm="bb", nonce="cc", uri="dd", response="ee"`, `Digest realm="bb", nonce="cc", response="ee", uri="dd", username="aa"`, &HeaderAuth{ @@ -77,6 +77,21 @@ var casesHeaderAuth = []struct { }, }, }, + { + "digest response with empty field", + `Digest username="", realm="IPCAM", nonce="5d17cd12b9fa8a85ac5ceef0926ea5a6", uri="rtsp://localhost:8554/mystream", response="c072ae90eb4a27f4cdcb90d62266b2a1"`, + `Digest realm="IPCAM", nonce="5d17cd12b9fa8a85ac5ceef0926ea5a6", response="c072ae90eb4a27f4cdcb90d62266b2a1", uri="rtsp://localhost:8554/mystream", username=""`, + &HeaderAuth{ + Prefix: "Digest", + Values: map[string]string{ + "username": "", + "realm": "IPCAM", + "nonce": "5d17cd12b9fa8a85ac5ceef0926ea5a6", + "uri": "rtsp://localhost:8554/mystream", + "response": "c072ae90eb4a27f4cdcb90d62266b2a1", + }, + }, + }, } func TestHeaderAuthRead(t *testing.T) {