fix: cosmovisor: fix (*Config.SetCurrentUpgrade file leak on failed JSON marshal+write (#12750)
This commit is contained in:
parent
a8a52d0775
commit
37e765daa6
@ -271,7 +271,7 @@ func (cfg *Config) validate() []error {
|
||||
}
|
||||
|
||||
// SetCurrentUpgrade sets the named upgrade to be the current link, returns error if this binary doesn't exist
|
||||
func (cfg *Config) SetCurrentUpgrade(u upgradetypes.Plan) error {
|
||||
func (cfg *Config) SetCurrentUpgrade(u upgradetypes.Plan) (rerr error) {
|
||||
// ensure named upgrade exists
|
||||
bin := cfg.UpgradeBin(u.Name)
|
||||
|
||||
@ -299,14 +299,19 @@ func (cfg *Config) SetCurrentUpgrade(u upgradetypes.Plan) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer func() {
|
||||
cerr := f.Close()
|
||||
if rerr == nil {
|
||||
rerr = cerr
|
||||
}
|
||||
}()
|
||||
|
||||
bz, err := json.Marshal(u)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if _, err := f.Write(bz); err != nil {
|
||||
return err
|
||||
}
|
||||
return f.Close()
|
||||
_, err = f.Write(bz)
|
||||
return err
|
||||
}
|
||||
|
||||
func (cfg *Config) UpgradeInfo() (upgradetypes.Plan, error) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user