Expected Behavior
_ = redis.NewClient(nil)
When opt parameter is nil, NewClient should handle it gracefully (e.g., use default configuration or return an error) instead of causing a panic.
Current Behavior
If opt is nil, calling opt.init() triggers a nil pointer dereference panic, leading to program crash.
Possible Solution
Add a nil check for opt parameter and initialize it with default values when it's nil:
func NewClient(opt *Options) *Client {
if opt == nil {
opt = &Options{} // Use default configuration or actively panic
}
// ...
}
Steps to Reproduce
- Create a
nil *Options instance: var opt *redis.Options
- Call
redis.NewClient(opt)
- The program panics with error:
panic: runtime error: invalid memory address or nil pointer dereference
Context (Environment)
Affects developers using the Go-Redis client library. This issue can lead to unexpected application crashes when NewClient is called with an uninitialized Options pointer.
Detailed Description
The NewClient method does not validate the opt parameter for nil before calling opt.init(). When opt is nil, this results in a critical runtime panic. This violates defensive programming principles and exposes the library to misuse by clients that might pass invalid configurations.
Possible Implementation
- Add a nil check at the beginning of
NewClient:
func NewClient(opt *Options) *Client {
if opt == nil {
opt = &Options{} // Initialize with default values
}
opt.init()
// ... rest of the implementation
}
- Update documentation to clarify that
opt can be nil (with defaults) or explicitly initialized.
Expected Behavior
_ = redis.NewClient(nil)When
optparameter isnil,NewClientshould handle it gracefully (e.g., use default configuration or return an error) instead of causing a panic.Current Behavior
If
optisnil, callingopt.init()triggers a nil pointer dereference panic, leading to program crash.Possible Solution
Add a nil check for
optparameter and initialize it with default values when it'snil:Steps to Reproduce
nil*Optionsinstance:var opt *redis.Optionsredis.NewClient(opt)panic: runtime error: invalid memory address or nil pointer dereferenceContext (Environment)
Affects developers using the Go-Redis client library. This issue can lead to unexpected application crashes when
NewClientis called with an uninitializedOptionspointer.Detailed Description
The
NewClientmethod does not validate theoptparameter fornilbefore callingopt.init(). Whenoptisnil, this results in a critical runtime panic. This violates defensive programming principles and exposes the library to misuse by clients that might pass invalid configurations.Possible Implementation
NewClient:optcan benil(with defaults) or explicitly initialized.