Merge pull request #149 from Nordix/coverity-in-ci

Add Coverity Scan to CI
This commit is contained in:
Yo-An Lin 2022-07-19 17:20:04 +08:00 committed by GitHub
commit edbeb0631d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 39 additions and 8 deletions

37
.github/workflows/coverity.yml vendored Normal file
View file

@ -0,0 +1,37 @@
name: coverity
on: [push, pull_request]
jobs:
analyze:
if: github.repository == 'c9s/r3'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Download Coverity
run: |
cd ..
wget -q https://scan.coverity.com/download/linux64 --post-data "token=${COVERITY_TOKEN}&project=r3" -O coverity-linux64.tgz
mkdir coverity
tar xzf coverity-linux64.tgz --strip 1 -C coverity
echo "$(pwd)/coverity/bin" >> $GITHUB_PATH
env:
COVERITY_TOKEN: ${{ secrets.COVERITY_TOKEN }}
- name: Build with Coverity
run: |
./autogen.sh
./configure --enable-check --enable-debug
cov-build --dir cov-int make V=1
- name: Submit the result to Coverity
run: |
tar czvf r3.tgz cov-int
curl \
--form token=${COVERITY_TOKEN} \
--form email=yoanlin93+github@gmail.com \
--form file=@r3.tgz \
--form version=${GITHUB_SHA} \
https://scan.coverity.com/builds?project=r3
env:
COVERITY_TOKEN: ${{ secrets.COVERITY_TOKEN }}

View file

@ -720,18 +720,11 @@ R3Node * r3_tree_insert_pathl_ex(R3Node *tree, const char *path, unsigned int pa
if ( slug_cnt > 1 ) {
unsigned int slug_len;
const char *p = r3_slug_find_placeholder(path, path_len, &slug_len);
#ifdef DEBUG
assert(p);
#endif
// find the next one '{', then break there
if(p) {
p = r3_slug_find_placeholder(p + slug_len + 1, path_len - slug_len - 1, NULL);
}
#ifdef DEBUG
p = r3_slug_find_placeholder(p + slug_len + 1, path_len - slug_len - 1, NULL);
assert(p);
#endif
// insert the first one edge, and break at "p"
R3Node * child = r3_tree_create(3);
@ -745,6 +738,7 @@ R3Node * r3_tree_insert_pathl_ex(R3Node *tree, const char *path, unsigned int pa
// there is one slug, let's see if it's optimiz-able by opcode
unsigned int slug_len = 0;
const char *slug_p = r3_slug_find_placeholder(path, path_len, &slug_len);
assert(slug_p);
unsigned int slug_pattern_len = 0;
const char *slug_pattern = r3_slug_find_pattern(slug_p, slug_len, &slug_pattern_len);