-
-
Save memememomo/0f731ed8621bc9982a11 to your computer and use it in GitHub Desktop.
MojoliciousのCookieヘッダのパースエラーの修正パッチ
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/lib/Mojo/Cookie/Response.pm b/lib/Mojo/Cookie/Response.pm | |
index 30d9aa1..98b4fa5 100644 | |
--- a/lib/Mojo/Cookie/Response.pm | |
+++ b/lib/Mojo/Cookie/Response.pm | |
@@ -31,7 +31,7 @@ sub parse { | |
# "expires" is a special case, thank you Netscape... | |
if ($name =~ /^expires$/i) { | |
push @$pairs, @{shift @$tree // []}; | |
- my $len = $pairs->[0] && $pairs->[0] =~ /-/ ? 6 : 10; | |
+ my $len = ($pairs->[0] // '') =~ /-/ ? 6 : 10; | |
$value .= join ' ', ',', grep {defined} splice @$pairs, 0, $len; | |
} | |
diff --git a/t/mojo/cookie.t b/t/mojo/cookie.t | |
index c586c4c..42fa89c 100644 | |
--- a/t/mojo/cookie.t | |
+++ b/t/mojo/cookie.t | |
@@ -422,4 +422,26 @@ is $cookies->[0]->expires->epoch, 0, 'right expires epoch value'; | |
is $cookies->[0]->secure, 1, 'right secure flag'; | |
is $cookies->[1], undef, 'no more cookies'; | |
+# Parse response cookie with two digit year (RFC 6265) | |
+$cookies = Mojo::Cookie::Response->parse( | |
+ 'foo=bar; Path=/; Expires=Tuesday, 09-Nov-19 23:12:40 GMT; Secure'); | |
+is $cookies->[0]->name, 'foo', 'right name'; | |
+is $cookies->[0]->value, 'bar', 'right value'; | |
+is $cookies->[0]->path, '/', 'right path'; | |
+is $cookies->[0]->expires, 'Sat, 09 Nov 2019 23:12:40 GMT', | |
+ 'right expires value'; | |
+is $cookies->[0]->expires->epoch, 1573341160, 'right expires epoch value'; | |
+is $cookies->[0]->secure, 1, 'right secure flag'; | |
+is $cookies->[1], undef, 'no more cookies'; | |
+$cookies = Mojo::Cookie::Response->parse( | |
+ 'foo=bar; Path=/; Expires=Tuesday, 09-Nov-99 23:12:40 GMT; Secure'); | |
+is $cookies->[0]->name, 'foo', 'right name'; | |
+is $cookies->[0]->value, 'bar', 'right value'; | |
+is $cookies->[0]->path, '/', 'right path'; | |
+is $cookies->[0]->expires, 'Tue, 09 Nov 1999 23:12:40 GMT', | |
+ 'right expires value'; | |
+is $cookies->[0]->expires->epoch, 942189160, 'right expires epoch value'; | |
+is $cookies->[0]->secure, 1, 'right secure flag'; | |
+is $cookies->[1], undef, 'no more cookies'; | |
+ | |
done_testing(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment