wdc-nvme: fix resource leak in wdc_enc_get_log()#3534
Closed
sahmed-ibm wants to merge 1 commit into
Closed
Conversation
The wdc_enc_get_log() function opens a file stream for writing when the user provides an output file path. The @output_fd pointer was declared as a plain FILE pointer with no cleanup mechanism, and no explicit fclose() call exists on any return path through the function. Because FILE streams buffer writes in userspace, failing to close the stream means buffered data is never flushed to disk. The output file will silently contain truncated or missing log data, and the underlying file descriptor is leaked for the lifetime of the process. Fix this by introducing a non-owning @fd pointer for passing to the helper functions. Declare @output_fd with __cleanup_file so it is automatically closed when the function returns. Assign @output_fd only when a real file is opened so that stdout is never passed to fclose(). Signed-off-by: Sarah Ahmed <sarah.ahmed@ibm.com>
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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 wdc_enc_get_log() function opens a file stream for writing when the user provides an output file path. The @output_fd pointer was declared as a plain FILE pointer with no cleanup mechanism, and no explicit fclose() call exists on any return path through the function.
Because FILE streams buffer writes in userspace, failing to close the stream means buffered data is never flushed to disk. The output file will silently contain truncated or missing log data, and the underlying file descriptor is leaked for the lifetime of the process.
Fix this by introducing a non-owning @fd pointer for passing to the helper functions. Declare @output_fd with __cleanup_file so it is automatically closed when the function returns. Assign @output_fd only when a real file is opened so that stdout is never passed to fclose().
Signed-off-by: Sarah Ahmed sarah.ahmed@ibm.com