@@ -499,24 +499,24 @@ static ngx_int_t zauth_parse_request (ngx_http_request_t * r) {
499499static ZauthResult token_from_header (ngx_str_t const * hdr , ZauthToken * * t ) {
500500 const char bearer [] = "Bearer " ;
501501 const char aws4_hmac_sha256 [] = "AWS4-HMAC-SHA256 " ;
502- if (hdr -> len >= sizeof (bearer ) && strncmp ((char const * ) hdr -> data , bearer , sizeof (bearer )) == 0 ) {
503- return zauth_token_parse (& hdr -> data [sizeof (bearer )], hdr -> len - sizeof (bearer ), t );
504- } else if (hdr -> len >= sizeof (aws4_hmac_sha256 ) && strncmp ((char const * ) hdr -> data , aws4_hmac_sha256 , sizeof (aws4_hmac_sha256 )) == 0 ) {
505- return token_from_aws_hmac_header (& hdr -> data [sizeof (aws4_hmac_sha256 )], hdr -> len - sizeof (aws4_hmac_sha256 ), t );
502+ if (hdr -> len >= sizeof (bearer ) - 1 && strncmp ((char const * ) hdr -> data , bearer , sizeof (bearer ) - 1 ) == 0 ) {
503+ return zauth_token_parse (& hdr -> data [sizeof (bearer ) - 1 ], hdr -> len - sizeof (bearer ) - 1 , t );
504+ } else if (hdr -> len >= sizeof (aws4_hmac_sha256 ) - 1 && strncmp ((char const * ) hdr -> data , aws4_hmac_sha256 , sizeof (aws4_hmac_sha256 ) - 1 ) == 0 ) {
505+ return token_from_aws_hmac_header (& hdr -> data [sizeof (aws4_hmac_sha256 ) - 1 ], hdr -> len - sizeof (aws4_hmac_sha256 ) - 1 , t );
506506 } else {
507507 return ZAUTH_PARSE_ERROR ;
508508 }
509509}
510510
511511static ZauthResult token_from_query (ngx_str_t const * query , ZauthToken * * t ) {
512512 const char param_name [] = "access_token=" ;
513- uint8_t const * start = memmem (query -> data , query -> len , param_name , sizeof (param_name ));
513+ uint8_t const * start = memmem (query -> data , query -> len , param_name , sizeof (param_name ) - 1 );
514514
515515 if (start == NULL ) {
516516 return ZAUTH_PARSE_ERROR ;
517517 }
518518
519- uint8_t const * token_start = start + sizeof (param_name );
519+ uint8_t const * token_start = start + sizeof (param_name ) - 1 ;
520520 size_t token_len = query -> len - (token_start - query -> data );
521521 uint8_t const * token_end = memchr (token_start , '&' , token_len );
522522
@@ -528,13 +528,13 @@ static ZauthResult token_from_query (ngx_str_t const * query, ZauthToken ** t) {
528528// https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-auth-using-authorization-header.html
529529static ZauthResult token_from_aws_hmac_header (uint8_t const * auth_header , size_t auth_header_len , ZauthToken * * t ) {
530530 const char component_name [] = "Credential=" ;
531- uint8_t const * start = memmem (auth_header , auth_header_len , component_name , sizeof (component_name ));
531+ uint8_t const * start = memmem (auth_header , auth_header_len , component_name , sizeof (component_name ) - 1 );
532532
533533 if (start == NULL ) {
534534 return ZAUTH_PARSE_ERROR ;
535535 }
536536
537- uint8_t const * token_start = start + sizeof (component_name );
537+ uint8_t const * token_start = start + sizeof (component_name ) - 1 ;
538538 size_t remaining_len = auth_header_len - (token_start - auth_header );
539539 uint8_t const * token_end = memchr (token_start , ',' , remaining_len );
540540
0 commit comments