Remove flush(stdout) in pkg/chrootarchive/diff_unix.go and improve error reporting of flush() to fix #21103
pkg/chrootarchive/diff_unix.go erroneously calls flush on stdout, which tries to read from stdout returning an error. This has been fixed by removing the call and by modifying flush to return errors and checking for these errors on calls to flush. Signed-off-by: Amit Krishnan <krish.amit@gmail.com>
This commit is contained in:
parent
b1d33bd4a2
commit
98910db2c0
3 changed files with 10 additions and 5 deletions
|
@ -46,7 +46,10 @@ func untar() {
|
||||||
fatal(err)
|
fatal(err)
|
||||||
}
|
}
|
||||||
// fully consume stdin in case it is zero padded
|
// fully consume stdin in case it is zero padded
|
||||||
flush(os.Stdin)
|
if _, err := flush(os.Stdin); err != nil {
|
||||||
|
fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -65,8 +65,10 @@ func applyLayer() {
|
||||||
fatal(fmt.Errorf("unable to encode layerSize JSON: %s", err))
|
fatal(fmt.Errorf("unable to encode layerSize JSON: %s", err))
|
||||||
}
|
}
|
||||||
|
|
||||||
flush(os.Stdout)
|
if _, err := flush(os.Stdin); err != nil {
|
||||||
flush(os.Stdin)
|
fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,6 @@ func fatal(err error) {
|
||||||
|
|
||||||
// flush consumes all the bytes from the reader discarding
|
// flush consumes all the bytes from the reader discarding
|
||||||
// any errors
|
// any errors
|
||||||
func flush(r io.Reader) {
|
func flush(r io.Reader) (bytes int64, err error) {
|
||||||
io.Copy(ioutil.Discard, r)
|
return io.Copy(ioutil.Discard, r)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue