Removed error code logic and replaced with library function (#39)
* Removed error code logic and replaced with library function * Added the gosecignore comment to prevent gosec failing
This commit is contained in:
committed by
GitHub Enterprise
parent
5449622d2a
commit
b20761cea0
@@ -22,7 +22,6 @@ import (
|
|||||||
"os/exec"
|
"os/exec"
|
||||||
"syscall"
|
"syscall"
|
||||||
|
|
||||||
"github.com/ibm-messaging/mq-container/internal/command"
|
|
||||||
"github.com/ibm-messaging/mq-container/internal/mqtemplate"
|
"github.com/ibm-messaging/mq-container/internal/mqtemplate"
|
||||||
"github.com/ibm-messaging/mq-container/pkg/containerruntimelogger"
|
"github.com/ibm-messaging/mq-container/pkg/containerruntimelogger"
|
||||||
"github.com/ibm-messaging/mq-container/pkg/logger"
|
"github.com/ibm-messaging/mq-container/pkg/logger"
|
||||||
@@ -43,7 +42,7 @@ func setPassword(user string, password string) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorf("Error closing password stdin: %v", err)
|
log.Errorf("Error closing password stdin: %v", err)
|
||||||
}
|
}
|
||||||
out, _, err := command.RunCmd(cmd)
|
out, err := cmd.CombinedOutput()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// Include the command output in the error
|
// Include the command output in the error
|
||||||
return fmt.Errorf("%v: %v", err.Error(), out)
|
return fmt.Errorf("%v: %v", err.Error(), out)
|
||||||
|
|||||||
@@ -73,7 +73,8 @@ func startWebServer(keystore, keystorepw, p12TrustStoreRef string) error {
|
|||||||
cmd.SysProcAttr = &syscall.SysProcAttr{}
|
cmd.SysProcAttr = &syscall.SysProcAttr{}
|
||||||
cmd.SysProcAttr.Credential = &syscall.Credential{Uid: uint32(uid), Gid: uint32(gid)}
|
cmd.SysProcAttr.Credential = &syscall.Credential{Uid: uint32(uid), Gid: uint32(gid)}
|
||||||
}
|
}
|
||||||
out, rc, err := command.RunCmd(cmd)
|
out, err := cmd.CombinedOutput()
|
||||||
|
rc := cmd.ProcessState.ExitCode()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Error %v starting web server: %v", rc, string(out))
|
log.Printf("Error %v starting web server: %v", rc, string(out))
|
||||||
return err
|
return err
|
||||||
|
|||||||
@@ -21,40 +21,24 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"os/user"
|
"os/user"
|
||||||
"runtime"
|
|
||||||
"strconv"
|
"strconv"
|
||||||
"syscall"
|
"syscall"
|
||||||
)
|
)
|
||||||
|
|
||||||
// RunCmd runs an OS command. On Linux it waits for the command to
|
|
||||||
// complete and returns the exit status (return code).
|
|
||||||
// Do not use this function to run shell built-ins (like "cd"), because
|
|
||||||
// the error handling works differently
|
|
||||||
func RunCmd(cmd *exec.Cmd) (string, int, error) {
|
|
||||||
// Run the command and wait for completion
|
|
||||||
out, err := cmd.CombinedOutput()
|
|
||||||
if err != nil {
|
|
||||||
// Assert that this is an ExitError
|
|
||||||
exiterr, ok := err.(*exec.ExitError)
|
|
||||||
// If the type assertion was correct, and we're on Linux
|
|
||||||
if ok && runtime.GOOS == "linux" {
|
|
||||||
status, ok := exiterr.Sys().(syscall.WaitStatus)
|
|
||||||
if ok {
|
|
||||||
return string(out), status.ExitStatus(), fmt.Errorf("%v: %v", cmd.Path, err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return string(out), -1, err
|
|
||||||
}
|
|
||||||
return string(out), 0, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Run runs an OS command. On Linux it waits for the command to
|
// Run runs an OS command. On Linux it waits for the command to
|
||||||
// complete and returns the exit status (return code).
|
// complete and returns the exit status (return code).
|
||||||
// Do not use this function to run shell built-ins (like "cd"), because
|
// Do not use this function to run shell built-ins (like "cd"), because
|
||||||
// the error handling works differently
|
// the error handling works differently
|
||||||
func Run(name string, arg ...string) (string, int, error) {
|
func Run(name string, arg ...string) (string, int, error) {
|
||||||
|
// Run the command and wait for completion
|
||||||
// #nosec G204
|
// #nosec G204
|
||||||
return RunCmd(exec.Command(name, arg...))
|
cmd := exec.Command(name, arg...)
|
||||||
|
out, err := cmd.CombinedOutput()
|
||||||
|
rc := cmd.ProcessState.ExitCode()
|
||||||
|
if err != nil {
|
||||||
|
return string(out), rc, fmt.Errorf("%v: %v", cmd.Path, err)
|
||||||
|
}
|
||||||
|
return string(out), rc, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// RunAsMQM runs the specified command as the mqm user
|
// RunAsMQM runs the specified command as the mqm user
|
||||||
@@ -67,7 +51,7 @@ func RunAsMQM(name string, arg ...string) (string, int, error) {
|
|||||||
return "", 0, err
|
return "", 0, err
|
||||||
}
|
}
|
||||||
cmd.SysProcAttr.Credential = &syscall.Credential{Uid: uint32(uid), Gid: uint32(gid)}
|
cmd.SysProcAttr.Credential = &syscall.Credential{Uid: uint32(uid), Gid: uint32(gid)}
|
||||||
return RunCmd(cmd)
|
return Run(name, arg...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// LookupMQM looks up the UID & GID of the mqm user
|
// LookupMQM looks up the UID & GID of the mqm user
|
||||||
|
|||||||
@@ -207,7 +207,7 @@ func (ks *KeyStore) RenameCertificate(from, to string) error {
|
|||||||
// #nosec G204
|
// #nosec G204
|
||||||
cmd := exec.Command("/opt/mqm/gskit8/bin/gsk8capicmd_64", "-cert", "-rename", "-db", ks.Filename, "-pw", ks.Password, "-label", from, "-new_label", to)
|
cmd := exec.Command("/opt/mqm/gskit8/bin/gsk8capicmd_64", "-cert", "-rename", "-db", ks.Filename, "-pw", ks.Password, "-label", from, "-new_label", to)
|
||||||
cmd.Env = append(os.Environ(), "LD_LIBRARY_PATH=/opt/mqm/gskit8/lib64/:/opt/mqm/gskit8/lib")
|
cmd.Env = append(os.Environ(), "LD_LIBRARY_PATH=/opt/mqm/gskit8/lib64/:/opt/mqm/gskit8/lib")
|
||||||
out, _, err := command.RunCmd(cmd)
|
out, err := cmd.CombinedOutput()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("error running \"%v -cert -rename\": %v %s", "/opt/mqm/gskit8/bin/gsk8capicmd_64", err, out)
|
return fmt.Errorf("error running \"%v -cert -rename\": %v %s", "/opt/mqm/gskit8/bin/gsk8capicmd_64", err, out)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user