Fix potential NULL dereference in ngx_http_auth_spnego_store_delegated_creds() #157
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The Svace static analysis tool identified two potential issues in the function
ngx_http_auth_spnego_store_delegated_creds
(), where the return values ofngx_pcalloc()
andngx_pool_cleanup_add()
were used without NULL-checks. These functions internally callngx_palloc()
, which may return NULL in case of memory allocation failure.In current situation, If
ngx_pcalloc()
fails to allocate memory, ccname will be NULL (815-848):And similar case we can see in lines 852-853,
ngx_pool_cleanup_add()
internally callsngx_palloc()
, which can return NULL:ngx_palloc()
is guaranteed not to return NULL only if there is enough space available in at least one of the existing memory pools in the linked list. However, this guarantee is not absolute. If there is no available space, memory allocation will proceed by callingngx_palloc_block()
, which then invokesngx_memalign()
orposix_memalign()
/memalign()
to allocate memory. These system calls can return NULL if allocation fails. Therefore, it is always recommended to check the return value ofngx_palloc()
and similar functions before using the allocated memory.So the solution is: