diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 79850154..fb1e7fd5 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -1,9 +1,8 @@ -name: "CodeQL" +name: CodeQL on: push: branches: [ rm ] - jobs: analyze: name: Analyze @@ -12,11 +11,11 @@ jobs: strategy: fail-fast: false matrix: - language: [ 'go' ] + language: ['go'] steps: - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Initialize CodeQL uses: github/codeql-action/init@v1 diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 9074c50b..5a95529c 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -13,7 +13,7 @@ jobs: steps: - name: Check out code into the Go module directory - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: fetch-depth: 0 @@ -52,7 +52,7 @@ jobs: - name: Get all docker tags if: startsWith(github.ref, 'refs/tags/') - uses: actions/github-script@v4 + uses: actions/github-script@v6 id: tags with: script: | diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml index 26d318c3..a81cfc1c 100644 --- a/.github/workflows/linter.yml +++ b/.github/workflows/linter.yml @@ -4,9 +4,19 @@ jobs: lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 + + - name: Get latest go version + id: version + run: | + echo ::set-output name=go_version::$(curl -s https://raw.githubusercontent.com/actions/go-versions/main/versions-manifest.json | grep -oE '"version": "[0-9]{1}.[0-9]{1,}(.[0-9]{1,})?"' | head -1 | cut -d':' -f2 | sed 's/ //g; s/"//g') + + - name: Setup Go + uses: actions/setup-go@v2 + with: + go-version: ${{ steps.version.outputs.go_version }} + - name: golangci-lint - uses: golangci/golangci-lint-action@v2 + uses: golangci/golangci-lint-action@v3 with: version: latest - args: --disable-all -E govet -E gofumpt -E megacheck ./... diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d293e136..fc838377 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,7 +15,7 @@ jobs: go-version: ${{ steps.version.outputs.go_version }} - name: Check out code into the Go module directory - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Cache go module uses: actions/cache@v2 diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 9978d235..1c6b765a 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/stale@v4 + - uses: actions/stale@v5 with: stale-issue-message: 'This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 5 days' days-before-stale: 60 diff --git a/component/process/process_linux.go b/component/process/process_linux.go index be758a69..0ca42716 100644 --- a/component/process/process_linux.go +++ b/component/process/process_linux.go @@ -9,7 +9,9 @@ import ( "os" "path" "path/filepath" + "strings" "syscall" + "unicode" "unsafe" "github.com/Dreamacro/clash/common/pool" @@ -219,24 +221,15 @@ func resolveProcessNameByProcSearch(inode, uid int) (string, error) { } func splitCmdline(cmdline []byte) string { - indexOfEndOfString := len(cmdline) + idx := bytes.IndexFunc(cmdline, func(r rune) bool { + return unicode.IsControl(r) || unicode.IsSpace(r) + }) - for i, c := range cmdline { - if c == 0 { - indexOfEndOfString = i - break - } - } - - return filepath.Base(string(cmdline[:indexOfEndOfString])) + return filepath.Base(string(cmdline[:idx])) } func isPid(s string) bool { - for _, s := range s { - if s < '0' || s > '9' { - return false - } - } - - return true + return strings.IndexFunc(s, func(r rune) bool { + return !unicode.IsDigit(r) + }) == -1 }