secret get fails when it cannot write the value (closes #155)
check / check (push) Waiting to run
check / check (push) Waiting to run
GetSecret and GetSecretWithVersion discarded the result of writing the value to stdout, so a full disk or a failing stdout left the caller with an empty or cut-short file and exit status 0. The write error is now returned, so the command prints it and exits 1. Deviation: a stdout the shell closed before `secret` started still exits 0, because the Go runtime opens /dev/null in its place and the write there succeeds. Model: opus-5-5
This commit was merged in pull request #166.
This commit is contained in:
@@ -443,7 +443,10 @@ func (cli *Instance) GetSecret(cmd *cobra.Command, secretName string) error {
|
||||
defer value.Destroy()
|
||||
|
||||
// Write the value straight from locked memory, with no trailing newline
|
||||
_, _ = cmd.OutOrStdout().Write(value.Bytes())
|
||||
_, err = cmd.OutOrStdout().Write(value.Bytes())
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to write secret value: %w", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -478,7 +481,10 @@ func (cli *Instance) GetSecretWithVersion(
|
||||
secret.Debug("Got secret value", "valueLength", value.Size())
|
||||
|
||||
// Write the value straight from locked memory, with no trailing newline
|
||||
_, _ = cmd.OutOrStdout().Write(value.Bytes())
|
||||
_, err = cmd.OutOrStdout().Write(value.Bytes())
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to write secret value: %w", err)
|
||||
}
|
||||
|
||||
secret.Debug("Printed value to stdout")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user