Skip to content

Commit 06c9254

Browse files
authored
Merge pull request #52 from curityio/fix/master/issue-50-large-jwt
Fix corruption of large JWTs when cache is enabled
2 parents a50d76e + d147c08 commit 06c9254

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

phantom_token.c

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -632,10 +632,10 @@ static ngx_int_t introspection_response_handler(ngx_http_request_t *request, voi
632632
ngx_str_t cache_data = ngx_null_string;
633633

634634
#if (NGX_HTTP_CACHE)
635-
if (!request->cache || !request->cache->buf)
635+
if (request->cache && !request->cache->buf)
636636
{
637-
// No cache; read JWT from response to sub-request
638-
jwt_start = request->header_end + sizeof("\r\n") - 1;
637+
// We have a cache but it's not primed
638+
ngx_http_file_cache_open(request);
639639
}
640640

641641
if (jwt_start == NULL && request->cache && request->cache->buf && request->cache->valid_sec > 0)
@@ -652,6 +652,10 @@ static ngx_int_t introspection_response_handler(ngx_http_request_t *request, voi
652652
jwt_start = cache_data.data;
653653
}
654654
}
655+
else
656+
{
657+
jwt_start = request->header_end + sizeof("\r\n") - 1; // FIXME: Won't work if JWT is large
658+
}
655659

656660
if (jwt_start == NULL)
657661
{
@@ -664,7 +668,7 @@ static ngx_int_t introspection_response_handler(ngx_http_request_t *request, voi
664668
return introspection_subrequest_status_code;
665669
}
666670
#else
667-
jwt_start = request->header_end + sizeof("\r\n") - 1;
671+
jwt_start = request->header_end + sizeof("\r\n") - 1; // FIXME: Won't work if JWT is large
668672
#endif
669673

670674
size_t jwt_len = request->headers_out.content_length_n;

0 commit comments

Comments
 (0)