diff options
Diffstat (limited to '.github')
-rw-r--r-- | .github/ISSUE_TEMPLATE.md | 28 | ||||
-rw-r--r-- | .github/ISSUE_TEMPLATE/backport.md | 7 | ||||
-rw-r--r-- | .github/ISSUE_TEMPLATE/bug_report.md | 55 | ||||
-rw-r--r-- | .github/ISSUE_TEMPLATE/feature_request.md | 17 | ||||
-rw-r--r-- | .github/PULL_REQUEST_TEMPLATE.md | 28 | ||||
-rw-r--r-- | .github/workflows/alt-architectures.yml | 100 | ||||
-rw-r--r-- | .github/workflows/clang-tidy.yml | 31 | ||||
-rw-r--r-- | .github/workflows/codeql-analysis.yml | 129 | ||||
-rw-r--r-- | .github/workflows/fuzzing.yml | 47 |
9 files changed, 442 insertions, 0 deletions
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..6ed5fee --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,28 @@ +## Found a bug? - We would like to help you and smash the bug away. +1. __Please don't "report" questions as bugs.__ + * We are reachable via + * Matrix room : #FreeRDP:matrix.org (main) + * XMPP channel: #FreeRDP#matrix.org@matrix.org (bridged) + * IRC channel : #freerdp @ irc.oftc.net (bridged) + * We are reachable via mailing list <freerdp-devel@lists.sourceforge.net> + * Try our mailing list for discussions/questions +1. Before reporting a bug have a look into our issue tracker to see if the bug was already reported and you can add some additional information. +1. If it's a __new__ bug - create a new issue. +1. For more details see https://github.com/FreeRDP/FreeRDP/wiki/BugReporting + +## To save time and help us identify the issue a bug report should at least contain the following: + * a useful description of the bug - "It's not working" isn't good enough - you must try harder ;) + * the steps to reproduce the bug + * command line you have used + * to what system did you connect to? (win8, 2008, ..) + * what did you expect to happen? + * what actually happened? + * freerdp version (e.g. xfreerdp --version) or package version or git commit + * freerdp configuration (e.g. xfreerdp --buildconfig) + * operating System, architecture, distribution e.g. linux, amd64, debian + * if you built it yourself add some notes which branch you have used, also your cmake parameters can help + * extra information helping us to find the bug + +## Please remove this text before submitting your issue! + +_Thank you for reporting a bug!_ diff --git a/.github/ISSUE_TEMPLATE/backport.md b/.github/ISSUE_TEMPLATE/backport.md new file mode 100644 index 0000000..9c7c529 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/backport.md @@ -0,0 +1,7 @@ +--- +name: Backport +about: Create a issue to request/track a backport + +--- + +Releated pull request for master: diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..bb88f0b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,55 @@ +--- +name: Bug report +about: Create a report to help us improve + +--- + +**Found a bug? - We would like to help you and smash the bug away.** +1. __Please don't "report" questions as bugs. For these (questions/build instructions/...) please use one of the following means of contact:__ + * We are reachable via: + * Matrix room : #FreeRDP:matrix.org (main) + * XMPP channel: #FreeRDP#matrix.org@matrix.org (bridged) + * IRC channel : #freerdp @ irc.oftc.net (bridged) + * We are reachable via mailing list <freerdp-devel@lists.sourceforge.net> + * Try our mailing list for discussions/questions +1. Before reporting a bug have a look into our issue tracker to see if the bug was already reported and you can add some additional information. +1. If it's a __new__ bug - create a new issue. +1. For more details see https://github.com/FreeRDP/FreeRDP/wiki/BugReporting + + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Application details** +* FreeRDP version (`xfreerdp /version`) +* Command line used +* Output of `xfreerdp /buildconfig` +* OS version connecting to (server side) +* If available the log output from a run with `/log-level:trace 2>&1 | tee log.txt` +* If you built it yourself add some notes which tag/commit/branch you have used, also your cmake parameters and + compiler can help + +**Environment (please complete the following information):** + - OS: [e.g. Linux/Windows/Android/..] + - Version/Distribution: [e.g. Debian 10, Windows 2008, Android 10] + - Architecture: [amd64, arm]: + +**Additional context** +Add any other context about the problem here. + +** Please remove this text before submitting your issue! + +_Thank you for reporting a bug!_ diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..066b2d9 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,17 @@ +--- +name: Feature request +about: Suggest an idea for this project + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..0780670 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,28 @@ +## This is how are pull requests handled by FreeRDP +1. Every new pull request needs to build and pass the unit tests at https://ci.freerdp.com +1. At least 1 (better two) people need to review and test a pull request and agree to accept + +## Preparations before creating a pull +* Rebase your branch to current master, no merges allowed! +* Try to clean up your commit history, group changes to commits +* Check your formatting! A _clang-format_ script can be found at ```.clang-format``` + * The cmake target ```clangformat``` reformats the whole codebase +* Optional (but higly recommended) + * Run a clang scanbuild before and after your changes to avoid introducing new bugs + * Run your compiler at pedantic level to check for new warnings + +## To ease accepting your contribution +* Give the pull request a proper name so people looking at it have an basic idea what it is for +* Add at least a brief description what it does (or should do :) and what it's good for +* Give instructions on how to test your changes +* Ideally add unit tests if adding new features + +## What you should be prepared for +* fix issues found during the review phase +* Joining our chat to talk to other developers or help them test your pull might accelerate acceptance + * Matrix room : #FreeRDP:matrix.org (main) + * XMPP channel: #FreeRDP#matrix.org@matrix.org (bridged) + * IRC channel : #freerdp @ irc.oftc.net (bridged) +* Joining our mailing list <freerdp-devel@lists.sourceforge.net> may be helpful too. + +## Please remove this text before submitting your pull! diff --git a/.github/workflows/alt-architectures.yml b/.github/workflows/alt-architectures.yml new file mode 100644 index 0000000..50d29d9 --- /dev/null +++ b/.github/workflows/alt-architectures.yml @@ -0,0 +1,100 @@ +name: '[arm,ppc,ricsv] architecture builds' +on: + workflow_dispatch: + branches: [ master, stable* ] + schedule: + - cron: '30 5 * * SUN' + +jobs: + build_job: + runs-on: ubuntu-latest + name: "Test on ${{ matrix.distro }}/${{ matrix.arch }}" + strategy: + fail-fast: false + matrix: + include: + - arch: armv6 + distro: bullseye + - arch: armv7 + distro: bullseye + - arch: aarch64 + distro: bullseye + - arch: s390x + distro: bullseye + - arch: ppc64le + distro: bullseye + - arch: riscv64 + distro: ubuntu22.04 + steps: + - uses: actions/checkout@v4 + - uses: uraimo/run-on-arch-action@master + name: "Run tests" + id: build + with: + arch: ${{ matrix.arch }} + distro: ${{ matrix.distro }} + githubToken: ${{ github.token }} + env: | + CTEST_OUTPUT_ON_FAILURE: 1 + WLOG_LEVEL: 'trace' + install: | + apt-get update -q -y + apt-get install -q -y \ + libxrandr-dev \ + libxinerama-dev \ + libusb-1.0-0-dev \ + xserver-xorg-dev \ + libswscale-dev \ + libswresample-dev \ + libavutil-dev \ + libavcodec-dev \ + libcups2-dev \ + libpulse-dev \ + libasound2-dev \ + libpcsclite-dev \ + xsltproc \ + libxcb-cursor-dev \ + libxcursor-dev \ + libcairo2-dev \ + libfaad-dev \ + libjpeg-dev \ + libgsm1-dev \ + ninja-build \ + libxfixes-dev \ + libxkbcommon-dev \ + libwayland-dev \ + libpam0g-dev \ + libxdamage-dev \ + libxcb-damage0-dev \ + libxtst-dev \ + libfuse3-dev \ + libsystemd-dev \ + libcairo2-dev \ + libsoxr-dev \ + libsdl2-dev \ + docbook-xsl \ + libkrb5-dev \ + libcjson-dev \ + libpkcs11-helper1-dev \ + libsdl2-ttf-dev \ + libwebkit2gtk-4.0-dev \ + libopus-dev \ + libwebp-dev \ + libpng-dev \ + libjpeg-dev \ + liburiparser-dev \ + cmake \ + clang + run: | + cmake -GNinja \ + -C ci/cmake-preloads/config-linux-all.txt \ + -B ci-build \ + -S . \ + -DCMAKE_INSTALL_PREFIX=/tmp/ci-test \ + -DCMAKE_C_COMPILER=/usr/bin/clang \ + -DCMAKE_CXX_COMPILER=/usr/bin/clang++ \ + -DUSE_UNWIND=OFF \ + -DUSE_EXECINFO=OFF \ + -DWITH_SANITIZE_ADDRESS=OFF + cmake --build ci-build --parallel $(nproc) --target install + cmake --build ci-build --parallel $(nproc) --target test diff --git a/.github/workflows/clang-tidy.yml b/.github/workflows/clang-tidy.yml new file mode 100644 index 0000000..703bdb6 --- /dev/null +++ b/.github/workflows/clang-tidy.yml @@ -0,0 +1,31 @@ +name: clang-tidy-review +on: + pull_request_target: + branches: [ master, stable* ] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: suzuki-shunsuke/get-pr-action@v0.1.0 + id: pr + - uses: actions/checkout@v4 + with: + ref: ${{steps.pr.outputs.merge_commit_sha}} + + # Run clang-tidy + - uses: ZedThree/clang-tidy-review@v0.17.1 + id: review + with: + clang_tidy_checks: '' + # List of packages to install + apt_packages: libkrb5-dev,libxkbcommon-dev,libxkbfile-dev,libx11-dev,libwayland-dev,libxrandr-dev,libxi-dev,libxrender-dev,libxext-dev,libxinerama-dev,libxfixes-dev,libxcursor-dev,libxv-dev,libxdamage-dev,libxtst-dev,libcups2-dev,libcairo2-dev,libpcsclite-dev,libasound2-dev,libswscale-dev,libpulse-dev,libavcodec-dev,libavutil-dev,libfuse3-dev,libswresample-dev,libusb-1.0-0-dev,libudev-dev,libdbus-glib-1-dev,libpam0g-dev,uuid-dev,libxml2-dev,libcjson-dev,libsdl2-2.0-0,libsdl2-dev,libsdl2-ttf-dev,libsdl2-image-dev,libsystemd-dev,libpkcs11-helper1-dev,libwebkit2gtk-4.0-dev,liburiparser-dev,libopus-dev,opensc-pkcs11,libwebp-dev,libjpeg-dev,libpng-dev,xsltproc,docbook-xsl,libgsm1-dev,libfaac-dev,libfaad-dev,libsoxr-dev,opencl-c-headers,opencl-headers,ocl-icd-opencl-dev + + # CMake command to run in order to generate compile_commands.json + build_dir: tidy + cmake_command: cmake -Btidy -S. -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DWITH_DEBUG_ALL=ON -DWITH_INTERNAL_MD4=ON -DWITH_INTERNAL_MD5=ON -DWITH_INTERNAL_RC4=ON -DBUILD_TESTING=ON -DWINPR_UTILS_IMAGE_JPEG=ON -DWINPR_UTILS_IMAGE_PNG=ON -DWINPR_UTILS_IMAGE_WEBP=ON -DWITH_BINARY_VERSIONING=ON -DWITH_CAIRO=ON -DWITH_DSP_EXPERIMENTAL=ON -DWITH_FAAC=ON -DWITH_FAAD2=ON -DWITH_FREERDP_DEPRECATED=ON -DWITH_FREERDP_DEPRECATED_COMMANDLINE=ON -DWITH_GSM=ON -DWITH_OPUS=ON -DWITH_PROXY_EMULATE_SMARTCARD=ON -DWITH_PULSE=ON -DWITH_SMARTCARD_INSPECT=ON -DWITH_SOXR=ON -DWITH_UNICODE_BUILTIN=ON -DWITH_VAAPI=ON -DWITH_WINPR_DEPRECATED=ON -DWITH_SDL_IMAGE_DIALOGS=ON -DWITH_PROFILER=ON -DWITH_OPENCL=ON -DCHANNEL_TSMF=ON + + # Uploads an artefact containing clang_fixes.json + - uses: ZedThree/clang-tidy-review/upload@v0.17.1 + id: upload-review diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml new file mode 100644 index 0000000..2db775f --- /dev/null +++ b/.github/workflows/codeql-analysis.yml @@ -0,0 +1,129 @@ +# For most projects, this workflow file will not need changing; you simply need +# to commit it to your repository. +# +# You may wish to alter this file to override the set of languages analyzed, +# or to provide custom queries or build logic. +# +# ******** NOTE ******** +# We have attempted to detect the languages in your repository. Please check +# the `language` matrix defined below to confirm you have the correct set of +# supported CodeQL languages. +# +name: "CodeQL" + +on: + workflow_dispatch: + branches: [ master, stable* ] + pull_request_target: + branches: [ master, stable* ] + +permissions: + contents: read + +jobs: + analyze: + permissions: + security-events: write + actions: read + contents: read + name: Analyze + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + language: [ 'cpp' ] + # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ] + # Learn more: + # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed + + steps: + - uses: suzuki-shunsuke/get-pr-action@v0.1.0 + id: pr + - uses: actions/checkout@v4 + with: + ref: ${{steps.pr.outputs.merge_commit_sha}} + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v3 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + # queries: ./path/to/local/query, your-org/your-repo/queries@main + + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + # - name: Autobuild + # uses: github/codeql-action/autobuild@v2 + + # âšī¸ Command-line programs to run using the OS shell. + # đ https://git.io/JvXDl + + # âī¸ If the Autobuild fails above, remove it and uncomment the following three lines + # and modify them (or add more) to build your code if your project + # uses a compiled language + + - run: | + sudo apt update + sudo apt install \ + libxrandr-dev \ + libxinerama-dev \ + libusb-1.0-0-dev \ + xserver-xorg-dev \ + libswscale-dev \ + libswresample-dev \ + libavutil-dev \ + libavcodec-dev \ + libcups2-dev \ + libpulse-dev \ + libasound2-dev \ + libpcsclite-dev \ + xsltproc \ + libxcb-cursor-dev \ + libxcursor-dev \ + libcairo2-dev \ + libfaac-dev \ + libfaad-dev \ + libjpeg-dev \ + libgsm1-dev \ + ninja-build \ + libxfixes-dev \ + libxkbcommon-dev \ + libwayland-dev \ + libpam0g-dev \ + libxdamage-dev \ + libxcb-damage0-dev \ + ccache \ + libxtst-dev \ + libfuse3-dev \ + libsystemd-dev \ + libcairo2-dev \ + libsoxr-dev \ + libsdl2-dev \ + docbook-xsl \ + libkrb5-dev \ + libcjson-dev \ + libpkcs11-helper1-dev \ + libsdl2-ttf-dev \ + libsdl2-image-dev \ + libwebkit2gtk-4.0-dev \ + clang \ + libopus-dev \ + libwebp-dev \ + libpng-dev \ + libjpeg-dev \ + liburiparser-dev + mkdir ci-build + cd ci-build + export CC=/usr/bin/clang + export CXX=/usr/bin/clang++ + export CFLAGS="-Weverything" + export CXXFLAGS="-Weverything" + cmake -GNinja ../ci/cmake-preloads/config-linux-all.txt .. + cmake --build . + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v3 diff --git a/.github/workflows/fuzzing.yml b/.github/workflows/fuzzing.yml new file mode 100644 index 0000000..948fd42 --- /dev/null +++ b/.github/workflows/fuzzing.yml @@ -0,0 +1,47 @@ +name: Fuzzing testing + +on: + workflow_dispatch: + branches: [ master, stable* ] + pull_request_target: + branches: [ master, stable* ] + +jobs: + fuzzing: + if: github.repository == 'FreeRDP/FreeRDP' + + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + sanitizer: [address] + + steps: + - uses: suzuki-shunsuke/get-pr-action@v0.1.0 + id: pr + - uses: actions/checkout@v4 + with: + ref: ${{steps.pr.outputs.merge_commit_sha}} + + - name: Build fuzzers (${{ matrix.sanitizer }}) + id: build + uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master + with: + oss-fuzz-project-name: 'freerdp' + dry-run: false + sanitizer: ${{ matrix.sanitizer }} + - name: Run fuzzers (${{ matrix.sanitizer }}) + uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master + with: + oss-fuzz-project-name: 'freerdp' + fuzz-seconds: 600 + dry-run: false + sanitizer: ${{ matrix.sanitizer }} + - name: Upload crash + uses: actions/upload-artifact@v3 + if: failure() && steps.build.outcome == 'success' + with: + name: ${{ matrix.sanitizer }}-artifacts + retention-days: 21 + path: ./out/artifacts |