summaryrefslogtreecommitdiffstats
path: root/.github
diff options
context:
space:
mode:
Diffstat (limited to '.github')
-rw-r--r--.github/ISSUE_TEMPLATE.md28
-rw-r--r--.github/ISSUE_TEMPLATE/backport.md7
-rw-r--r--.github/ISSUE_TEMPLATE/bug_report.md55
-rw-r--r--.github/ISSUE_TEMPLATE/feature_request.md17
-rw-r--r--.github/PULL_REQUEST_TEMPLATE.md28
-rw-r--r--.github/workflows/alt-architectures.yml100
-rw-r--r--.github/workflows/clang-tidy.yml31
-rw-r--r--.github/workflows/codeql-analysis.yml129
-rw-r--r--.github/workflows/fuzzing.yml47
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