Use named pipe bit when checking for piped input (#603)

* use named pipe bit when checking for piped input

Signed-off-by: Alex Goodman <alex.goodman@anchore.com>
Co-authored-by: Christopher Angelo Phillips <christopher.phillips@anchore.com>
This commit is contained in:
Alex Goodman 2021-11-02 12:41:02 -04:00 committed by GitHub
parent 3ac95ac4f6
commit 484284706c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -12,5 +12,9 @@ func IsPipedInput() (bool, error) {
return false, fmt.Errorf("unable to determine if there is piped input: %w", err)
}
return fi.Mode()&os.ModeCharDevice == 0, nil
// note: we should NOT use the absence of a character device here as the hint that there may be input expected
// on stdin, as running syft as a subprocess you would expect no character device to be present but input can
// be from either stdin or indicated by the CLI. Checking if stdin is a pipe is the most direct way to determine
// if there *may* be bytes that will show up on stdin that should be used for the analysis source.
return fi.Mode()&os.ModeNamedPipe != 0, nil
}