Browse Source

Fail early in cookie-related API functions

Tom Burdick 13 years ago
parent
commit
b75859e075
2 changed files with 5 additions and 5 deletions
  1. 3 3
      src/cowboy_cookies.erl
  2. 2 2
      src/cowboy_http_req.erl

+ 3 - 3
src/cowboy_cookies.erl

@@ -43,17 +43,17 @@
 -spec parse_cookie(binary()) -> kvlist().
 parse_cookie(<<>>) ->
 	[];
-parse_cookie(Cookie) ->
+parse_cookie(Cookie) when is_binary(Cookie) ->
 	parse_cookie(Cookie, []).
 
 %% @doc Short-hand for <code>cookie(Key, Value, [])</code>.
 -spec cookie(binary(), binary()) -> kvlist().
-cookie(Key, Value) ->
+cookie(Key, Value) when is_binary(Key) andalso is_binary(Value) ->
 	cookie(Key, Value, []).
 
 %% @doc Generate a Set-Cookie header field tuple.
 -spec cookie(binary(), binary(), [cookie_option()]) -> kvlist().
-cookie(Key, Value, Options) ->
+cookie(Key, Value, Options) when is_binary(Key) andalso is_binary(Value) andalso is_list(Options) ->
 	Cookie = <<(any_to_binary(Key))/binary, "=", (quote(Value))/binary, "; Version=1">>,
 	%% Set-Cookie:
 	%%    Comment, Domain, Max-Age, Path, Secure, Version

+ 2 - 2
src/cowboy_http_req.erl

@@ -181,14 +181,14 @@ headers(Req) ->
 %% @equiv cookie(Name, Req, undefined)
 -spec cookie(binary(), #http_req{})
 	-> {binary() | true | undefined, #http_req{}}.
-cookie(Name, Req) ->
+cookie(Name, Req) when is_binary(Name) ->
 	cookie(Name, Req, undefined).
 
 %% @doc Return the cookie value for the given key, or a default if
 %% missing.
 -spec cookie(binary(), #http_req{}, Default)
 	-> {binary() | true | Default, #http_req{}} when Default::any().
-cookie(Name, Req=#http_req{cookies=undefined}, Default) ->
+cookie(Name, Req=#http_req{cookies=undefined}, Default) when is_binary(Name) ->
 	case header('Cookie', Req) of
 		{undefined, Req2} ->
 			{Default, Req2#http_req{cookies=[]}};