Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
Already on GitHub? Sign in to your account
cmd/snap-update-ns: create missing mount points automatically. #4008
921ad9b
dc32ac4
59c20b8
dcb715c
b38baed
1a953f5
4085659
e875914
9787ce6
02337df
bf710f9
aaf59b3
244efa3
d1d9963
a6e00a0
d4fb3f8
f6fad40
5870e35
e759463
29b7bfc
bb48fb1
08cd312
9ea7f84
9b187b4
9c825ed
9bbd55b
3f03c5c
74c7b66
14a3e0f
08189e1
e27e692
c7f1cc4
73a4214
d5c0d1a
112703a
bc5f97d
bcd5fdf
c251b0d
1a4d212
45cd226
5e373cd
433abfa
07b54a1
0fb6f44
b43daa0
e32ac7b
cmd/snap-update-ns: use defer instead of hand-held close
Signed-off-by: Zygmunt Krynicki <me@zygoon.pl>
- Loading branch information...
| @@ -76,6 +76,7 @@ func SecureMkdirAllImpl(name string, perm os.FileMode, uid, gid int) error { | ||
| if err != nil { | ||
| return fmt.Errorf("cannot open root directory: %v", err) | ||
| } | ||
|
|
||
| + defer sysClose(fd) | ||
| // Split the path by entries and create each element using mkdirat() using | ||
| // the parent directory as reference. Each time we open the newly created | ||
| @@ -93,21 +94,14 @@ func SecureMkdirAllImpl(name string, perm os.FileMode, uid, gid int) error { | ||
| case syscall.EEXIST: | ||
| made = false | ||
| default: | ||
| - if err := sysClose(fd); err != nil { | ||
| - return fmt.Errorf("cannot close file descriptor %d: %v", fd, err) | ||
| - } | ||
| return fmt.Errorf("cannot mkdir path segment %q: %v", segment, err) | ||
| } | ||
| } | ||
| - previousFd := fd | ||
| - | ||
| fd, err = sysOpenat(fd, segment, openFlags, 0) | ||
|
|
||
| - if err := sysClose(previousFd); err != nil { | ||
| - return fmt.Errorf("cannot close previous file descriptor %d: %v", fd, err) | ||
| - } | ||
| if err != nil { | ||
mvo5
Collaborator
|
||
| return fmt.Errorf("cannot open path segment %q: %v", segment, err) | ||
| } | ||
| + defer sysClose(fd) | ||
chipaca
Member
|
||
| if made { | ||
| // Chown each segment that we made. | ||
| if err := sysFchown(fd, uid, gid); err != nil { | ||
| @@ -116,9 +110,6 @@ func SecureMkdirAllImpl(name string, perm os.FileMode, uid, gid int) error { | ||
| } | ||
| } | ||
| - if err = sysClose(fd); err != nil { | ||
| - return fmt.Errorf("cannot close file descriptor %d: %v", fd, err) | ||
| - } | ||
| return nil | ||
|
|
||
| } | ||
Don't we need a
defer sysClose(fd)here?