aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/sonar.yml121
-rw-r--r--CMakeLists.txt2
-rw-r--r--Makefile31
-rw-r--r--autotests/testolmaccount.cpp7
-rw-r--r--lib/converters.cpp2
-rw-r--r--lib/e2ee/qolmaccount.cpp2
-rw-r--r--lib/e2ee/qolmerrors.cpp13
-rw-r--r--lib/e2ee/qolmerrors.h2
-rw-r--r--lib/e2ee/qolminboundsession.cpp5
-rw-r--r--lib/e2ee/qolmoutboundsession.cpp3
-rw-r--r--lib/e2ee/qolmsession.cpp2
-rw-r--r--lib/e2ee/qolmutility.cpp2
-rwxr-xr-xrun-tests.sh23
13 files changed, 40 insertions, 175 deletions
diff --git a/.github/workflows/sonar.yml b/.github/workflows/sonar.yml
deleted file mode 100644
index c987b0cc..00000000
--- a/.github/workflows/sonar.yml
+++ /dev/null
@@ -1,121 +0,0 @@
-name: Sonar
-
-on:
- push:
- pull_request:
- types: [opened, reopened]
-
-defaults:
- run:
- shell: bash
-
-jobs:
- SonarCloud:
- runs-on: ubuntu-latest
- strategy:
- fail-fast: false
- matrix:
- qt-version: [ '5.12.10' ]
- e2ee: [ '', 'e2ee' ]
- update-api: [ '', 'update-api' ]
-
- env:
- SONAR_SCANNER_VERSION: 4.6.2.2472
- SONAR_SERVER_URL: "https://sonarcloud.io"
- BUILD_WRAPPER_OUT_DIR: build/sonar
-
- steps:
- - uses: actions/checkout@v2
- with:
- fetch-depth: 0
- submodules: ${{ matrix.e2ee != '' }}
-
- - name: Cache Qt
- id: cache-qt
- uses: actions/cache@v2
- with:
- path: ${{ runner.workspace }}/Qt
- key: ${{ runner.os }}-Qt${{ matrix.qt-version }}-cache
-
- - name: Install Qt
- uses: jurplel/install-qt-action@v2.11.1
- with:
- version: ${{ matrix.qt-version }}
-# arch: ${{ matrix.qt-arch }} # Only Windows needs that
- cached: ${{ steps.cache-qt.outputs.cache-hit }}
-
- - name: Install Ninja
- uses: seanmiddleditch/gha-setup-ninja@v3
-
- - name: Setup build environment
- run: |
- echo "CC=gcc-10" >>$GITHUB_ENV
- echo "CXX=g++-10" >>$GITHUB_ENV
- mkdir -p $HOME/.sonar
- echo "CMAKE_ARGS=-G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_SHARED_LIBS=false \
- -DCMAKE_INSTALL_PREFIX=~/.local -DCMAKE_PREFIX_PATH=~/.local" >>$GITHUB_ENV
- cmake -E make_directory ${{ runner.workspace }}/build
-
- - name: Build and install olm
- if: matrix.e2ee
- run: |
- cd ..
- git clone https://gitlab.matrix.org/matrix-org/olm.git
- cmake -S olm -B olm/build $CMAKE_ARGS
- cmake --build olm/build --target install
-
- - name: Build and install qtKeychain
- if: matrix.e2ee
- run: |
- cd ..
- git clone https://github.com/frankosterfeld/qtkeychain.git
- cmake -S qtkeychain -B qtkeychain/build $CMAKE_ARGS
- cmake --build qtkeychain/build --target install
-
- - name: Pull CS API and build GTAD
- if: matrix.update-api
- run: |
- cd ..
- git clone https://github.com/quotient-im/matrix-doc.git
- git clone --recursive https://github.com/KitsuneRal/gtad.git
- cmake -S gtad -B gtad $CMAKE_ARGS -DBUILD_SHARED_LIBS=OFF
- cmake --build gtad
- echo "CMAKE_ARGS=$CMAKE_ARGS -DMATRIX_DOC_PATH=$GITHUB_WORKSPACE/../matrix-doc \
- -DGTAD_PATH=$GITHUB_WORKSPACE/../gtad/gtad" \
- >>$GITHUB_ENV
-
- - name: Download and set up Sonar Cloud tools
- run: |
- pushd $HOME/.sonar
- curl -sSLo build-wrapper.zip $SONAR_SERVER_URL/static/cpp/build-wrapper-linux-x86.zip
- unzip -o build-wrapper.zip
- echo "BUILD_WRAPPER=$HOME/.sonar/build-wrapper-linux-x86/build-wrapper-linux* --out-dir $BUILD_WRAPPER_OUT_DIR" >>$GITHUB_ENV
- curl -sSLo sonar-scanner.zip \
- https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-$SONAR_SCANNER_VERSION-linux.zip
- unzip -o sonar-scanner.zip
- popd
-
- - name: Configure libQuotient
- run: |
- if [[ '${{ runner.os }}' == 'Windows' ]]; then
- BIN_DIR=.
- else
- BIN_DIR=bin
- fi
- echo "BIN_DIR=$BIN_DIR" >>$GITHUB_ENV
- cmake -S $GITHUB_WORKSPACE -B build $CMAKE_ARGS -DQuotient_ENABLE_E2EE=${{ matrix.e2ee }}
-
- - name: Regenerate API code
- if: matrix.update-api
- run: cmake --build build --target update-api
-
- - name: Build libQuotient
- run: |
- $BUILD_WRAPPER cmake --build build --target all
-
- - name: Run sonar-scanner
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
- run: |
- $HOME/.sonar/sonar-scanner*/bin/sonar-scanner --define sonar.host.url="${{ env.SONAR_SERVER_URL }}" --define sonar.cfamily.build-wrapper-output="${{ env.BUILD_WRAPPER_OUT_DIR }}"
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1ff65282..9ef3477e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -89,7 +89,7 @@ message(STATUS "Using Qt ${${Qt}_VERSION} at ${Qt_Prefix}")
if (${PROJECT_NAME}_ENABLE_E2EE)
find_package(${Qt} ${QtMinVersion} REQUIRED Sql)
- find_package(Olm 3.2.1 REQUIRED)
+ find_package(Olm 3.1.3 REQUIRED)
set_package_properties(Olm PROPERTIES
DESCRIPTION "Implementation of the Olm and Megolm cryptographic ratchets"
URL "https://gitlab.matrix.org/matrix-org/olm"
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 450e7888..00000000
--- a/Makefile
+++ /dev/null
@@ -1,31 +0,0 @@
-SYNAPSE_IMAGE="matrixdotorg/synapse:v1.24.0"
-
-test: ## Run the tests
- @cd build/ && GTEST_COLOR=1 ctest --verbose
-
-synapse: ## Start a synapse instance on docker
- @mkdir -p data
- @chmod 0777 data
- @docker run -v `pwd`/data:/data --rm \
- -e SYNAPSE_SERVER_NAME=localhost -e SYNAPSE_REPORT_STATS=no ${SYNAPSE_IMAGE} generate
- @./.ci/adjust-config.sh
- @docker run -d \
- --name synapse \
- -p 443:8008 \
- -p 8448:8008 \
- -p 8008:8008 \
- -v `pwd`/data:/data ${SYNAPSE_IMAGE}
- @echo Waiting for synapse to start...
- @until curl -s -f -k https://localhost:443/_matrix/client/versions; do echo "Checking ..."; sleep 2; done
- @echo Register alice
- @docker exec synapse /bin/sh -c 'register_new_matrix_user --admin -u alice -p secret -c /data/homeserver.yaml https://localhost:8008'
- @echo Register bob
- @docker exec synapse /bin/sh -c 'register_new_matrix_user --admin -u bob -p secret -c /data/homeserver.yaml https://localhost:8008'
- @echo Register carl
- @docker exec synapse /bin/sh -c 'register_new_matrix_user --admin -u carl -p secret -c /data/homeserver.yaml https://localhost:8008'
-
-stop-synapse: ## Stop any running instance of synapse
- @rm -rf ./data/*
- @docker rm -f synapse 2>&1>/dev/null
-
-restart: stop-synapse synapse
diff --git a/autotests/testolmaccount.cpp b/autotests/testolmaccount.cpp
index f0fcfe58..d547b683 100644
--- a/autotests/testolmaccount.cpp
+++ b/autotests/testolmaccount.cpp
@@ -12,13 +12,6 @@
#include <room.h>
#include <csapi/joining.h>
-// for sleep
-#ifdef _WIN32
-#include <Windows.h>
-#else
-#include <unistd.h>
-#endif
-
using namespace Quotient;
void TestOlmAccount::pickleUnpickledTest()
diff --git a/lib/converters.cpp b/lib/converters.cpp
index 4136940f..6cbb554d 100644
--- a/lib/converters.cpp
+++ b/lib/converters.cpp
@@ -3,7 +3,7 @@
#include "converters.h"
-#include <QVariant>
+#include <QtCore/QVariant>
#include "e2ee/e2ee.h"
QJsonValue Quotient::JsonConverter<QVariant>::dump(const QVariant& v)
diff --git a/lib/e2ee/qolmaccount.cpp b/lib/e2ee/qolmaccount.cpp
index aaf51946..ffb004cc 100644
--- a/lib/e2ee/qolmaccount.cpp
+++ b/lib/e2ee/qolmaccount.cpp
@@ -34,7 +34,7 @@ bool operator==(const IdentityKeys& lhs, const IdentityKeys& rhs)
// Convert olm error to enum
QOlmError lastError(OlmAccount *account) {
- const std::string error_raw = olm_account_last_error(account);
+ const auto error_raw = olm_account_last_error(account);
return fromString(error_raw);
}
diff --git a/lib/e2ee/qolmerrors.cpp b/lib/e2ee/qolmerrors.cpp
index 6db1803c..568cf7fe 100644
--- a/lib/e2ee/qolmerrors.cpp
+++ b/lib/e2ee/qolmerrors.cpp
@@ -4,17 +4,18 @@
#include "qolmerrors.h"
+#include <cstring>
-Quotient::QOlmError Quotient::fromString(const std::string &error_raw) {
- if (!error_raw.compare("BAD_ACCOUNT_KEY")) {
+Quotient::QOlmError Quotient::fromString(const char* error_raw) {
+ if (!strncmp(error_raw, "BAD_ACCOUNT_KEY", 15)) {
return QOlmError::BadAccountKey;
- } else if (!error_raw.compare("BAD_MESSAGE_KEY_ID")) {
+ } else if (!strncmp(error_raw, "BAD_MESSAGE_KEY_ID", 18)) {
return QOlmError::BadMessageKeyId;
- } else if (!error_raw.compare("INVALID_BASE64")) {
+ } else if (!strncmp(error_raw, "INVALID_BASE64", 14)) {
return QOlmError::InvalidBase64;
- } else if (!error_raw.compare("NOT_ENOUGH_RANDOM")) {
+ } else if (!strncmp(error_raw, "NOT_ENOUGH_RANDOM", 17)) {
return QOlmError::NotEnoughRandom;
- } else if (!error_raw.compare("OUTPUT_BUFFER_TOO_SMALL")) {
+ } else if (!strncmp(error_raw, "OUTPUT_BUFFER_TOO_SMALL", 23)) {
return QOlmError::OutputBufferTooSmall;
} else {
return QOlmError::Unknown;
diff --git a/lib/e2ee/qolmerrors.h b/lib/e2ee/qolmerrors.h
index f8390d2a..f2d77851 100644
--- a/lib/e2ee/qolmerrors.h
+++ b/lib/e2ee/qolmerrors.h
@@ -23,6 +23,6 @@ enum QOlmError
Unknown,
};
-QOlmError fromString(const std::string &error_raw);
+QOlmError fromString(const char* error_raw);
} //namespace Quotient
diff --git a/lib/e2ee/qolminboundsession.cpp b/lib/e2ee/qolminboundsession.cpp
index 9bf56b6c..2c546875 100644
--- a/lib/e2ee/qolminboundsession.cpp
+++ b/lib/e2ee/qolminboundsession.cpp
@@ -8,7 +8,7 @@
using namespace Quotient;
QOlmError lastError(OlmInboundGroupSession *session) {
- const std::string error_raw = olm_inbound_group_session_last_error(session);
+ const auto error_raw = olm_inbound_group_session_last_error(session);
return fromString(error_raw);
}
@@ -27,9 +27,8 @@ QOlmInboundGroupSession::~QOlmInboundGroupSession()
std::unique_ptr<QOlmInboundGroupSession> QOlmInboundGroupSession::create(const QByteArray &key)
{
const auto olmInboundGroupSession = olm_inbound_group_session(new uint8_t[olm_inbound_group_session_size()]);
- const auto temp = key;
const auto error = olm_init_inbound_group_session(olmInboundGroupSession,
- reinterpret_cast<const uint8_t *>(temp.data()), temp.size());
+ reinterpret_cast<const uint8_t *>(key.constData()), key.size());
if (error == olm_error()) {
throw lastError(olmInboundGroupSession);
diff --git a/lib/e2ee/qolmoutboundsession.cpp b/lib/e2ee/qolmoutboundsession.cpp
index 88e6b2e1..58196412 100644
--- a/lib/e2ee/qolmoutboundsession.cpp
+++ b/lib/e2ee/qolmoutboundsession.cpp
@@ -8,7 +8,7 @@
using namespace Quotient;
QOlmError lastError(OlmOutboundGroupSession *session) {
- const std::string error_raw = olm_outbound_group_session_last_error(session);
+ const auto error_raw = olm_outbound_group_session_last_error(session);
return fromString(error_raw);
}
@@ -21,6 +21,7 @@ QOlmOutboundGroupSession::QOlmOutboundGroupSession(OlmOutboundGroupSession *sess
QOlmOutboundGroupSession::~QOlmOutboundGroupSession()
{
olm_clear_outbound_group_session(m_groupSession);
+ Q_ASSERT(sizeof(m_groupSession) == olm_outbound_group_session_size());
delete[](reinterpret_cast<uint8_t *>(m_groupSession));
}
diff --git a/lib/e2ee/qolmsession.cpp b/lib/e2ee/qolmsession.cpp
index 69d8b431..575019b3 100644
--- a/lib/e2ee/qolmsession.cpp
+++ b/lib/e2ee/qolmsession.cpp
@@ -11,7 +11,7 @@
using namespace Quotient;
QOlmError lastError(OlmSession* session) {
- const std::string error_raw = olm_session_last_error(session);
+ const auto error_raw = olm_session_last_error(session);
return fromString(error_raw);
}
diff --git a/lib/e2ee/qolmutility.cpp b/lib/e2ee/qolmutility.cpp
index d0684055..13ee695e 100644
--- a/lib/e2ee/qolmutility.cpp
+++ b/lib/e2ee/qolmutility.cpp
@@ -10,7 +10,7 @@ using namespace Quotient;
// Convert olm error to enum
QOlmError lastError(OlmUtility *utility) {
- const std::string error_raw = olm_utility_last_error(utility);
+ const auto error_raw = olm_utility_last_error(utility);
return fromString(error_raw);
}
diff --git a/run-tests.sh b/run-tests.sh
new file mode 100755
index 00000000..b49f37a1
--- /dev/null
+++ b/run-tests.sh
@@ -0,0 +1,23 @@
+mkdir -p data
+chmod 0777 data
+docker run -v `pwd`/data:/data --rm \
+ -e SYNAPSE_SERVER_NAME=localhost -e SYNAPSE_REPORT_STATS=no matrixdotorg/synapse:v1.24.0 generate
+./.ci/adjust-config.sh
+docker run -d \
+ --name synapse \
+ -p 1234:8008 \
+ -p 8448:8008 \
+ -p 8008:8008 \
+ -v `pwd`/data:/data matrixdotorg/synapse:v1.24.0
+echo Waiting for synapse to start...
+until curl -s -f -k https://localhost:1234/_matrix/client/versions; do echo "Checking ..."; sleep 2; done
+echo Register alice
+docker exec synapse /bin/sh -c 'register_new_matrix_user --admin -u alice -p secret -c /data/homeserver.yaml https://localhost:8008'
+echo Register bob
+docker exec synapse /bin/sh -c 'register_new_matrix_user --admin -u bob -p secret -c /data/homeserver.yaml https://localhost:8008'
+echo Register carl
+docker exec synapse /bin/sh -c 'register_new_matrix_user --admin -u carl -p secret -c /data/homeserver.yaml https://localhost:8008'
+
+cd build/ && GTEST_COLOR=1 ctest --verbose
+rm -rf ./data/*
+docker rm -f synapse 2>&1>/dev/null