Skip to content

Commit 6990c08

Browse files
committed
Release v1.0.1
2 parents b5c2b4f + 1f13078 commit 6990c08

File tree

10 files changed

+617
-253
lines changed

10 files changed

+617
-253
lines changed

.github/workflows/actions_build.yml

Lines changed: 156 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ name: Github Actions Build
33
on: [push]
44

55
env:
6-
COMMS_TAG: v5.2.5
7-
CC_MQTT5_TAG: v2.8
6+
COMMS_TAG: v5.2.7
7+
CC_MQTT5_TAG: v2.9
88

99
jobs:
1010
build_gcc_ubuntu_22_04:
@@ -15,9 +15,80 @@ jobs:
1515
type: [Debug, Release, MinSizeRel]
1616
cpp: [17, 20]
1717
cc_ver: [9, 10, 11, 12]
18+
sanitize: [ON, OFF]
1819
exclude:
20+
- type: Debug
21+
sanitize: OFF
1922
- cc_ver: 12
20-
cpp: 20
23+
cpp: 20
24+
25+
steps:
26+
- uses: actions/checkout@v4
27+
28+
- name: Prepare Install
29+
run: sudo apt-get update --fix-missing
30+
31+
- name: Install Packages
32+
run: sudo apt install libboost-all-dev mosquitto gcc-${{matrix.cc_ver}} g++-${{matrix.cc_ver}}
33+
34+
- name: Create Build Environment
35+
run: cmake -E make_directory ${{runner.workspace}}/build
36+
37+
- name: Prepare externals
38+
shell: bash
39+
run: $GITHUB_WORKSPACE/script/prepare_externals.sh
40+
env:
41+
BUILD_DIR: ${{runner.workspace}}/build
42+
CC: gcc-${{matrix.cc_ver}}
43+
CXX: g++-${{matrix.cc_ver}}
44+
EXTERNALS_DIR: ${{runner.workspace}}/externals
45+
COMMON_INSTALL_DIR: ${{runner.workspace}}/build/install
46+
COMMON_BUILD_TYPE: ${{matrix.type}}
47+
COMMON_CXX_STANDARD: ${{matrix.cpp}}
48+
COMMS_TAG: ${{env.COMMS_TAG}}
49+
CC_MQTT5_TAG: ${{env.CC_MQTT5_TAG}}
50+
51+
- name: Configure CMake
52+
shell: bash
53+
working-directory: ${{runner.workspace}}/build
54+
run: |
55+
cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=${{matrix.type}} -DCMAKE_INSTALL_PREFIX=install \
56+
-DCMAKE_PREFIX_PATH=${{runner.workspace}}/build/install -DCMAKE_CXX_STANDARD=${{matrix.cpp}} \
57+
-DCC_MQTT5_WITH_DEFAULT_SANITIZERS=${{matrix.sanitize}} \
58+
-DCC_MQTT5_BUILD_UNIT_TESTS=ON -DCC_MQTT5_BUILD_INTEGRATION_TESTS=ON \
59+
-DCC_MQTT5_CUSTOM_CLIENT_CONFIG_FILES="$GITHUB_WORKSPACE/client/lib/script/BareMetalTestConfig.cmake;$GITHUB_WORKSPACE/client/lib/script/Qos0TestConfig.cmake;$GITHUB_WORKSPACE/client/lib/script/Qos1TestConfig.cmake" \
60+
-DCC_MQTT5_CLIENT_AFL_FUZZ=ON
61+
env:
62+
CC: gcc-${{matrix.cc_ver}}
63+
CXX: g++-${{matrix.cc_ver}}
64+
65+
- name: Build Target
66+
working-directory: ${{runner.workspace}}/build
67+
shell: bash
68+
run: cmake --build . --config ${{matrix.type}} --target install
69+
env:
70+
VERBOSE: 1
71+
72+
- name: Testing
73+
working-directory: ${{runner.workspace}}/build
74+
shell: bash
75+
run: ctest -V
76+
77+
build_gcc_ubuntu_24_04:
78+
runs-on: ubuntu-24.04
79+
strategy:
80+
fail-fast: false
81+
matrix:
82+
type: [Debug, Release, MinSizeRel]
83+
cc_ver: [13, 14]
84+
cpp: [17, 20, 23]
85+
sanitize: [ON, OFF]
86+
exclude:
87+
- type: Debug
88+
sanitize: OFF
89+
- cc_ver: 13
90+
cpp: 23
91+
2192
steps:
2293
- uses: actions/checkout@v4
2394

@@ -50,7 +121,7 @@ jobs:
50121
run: |
51122
cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=${{matrix.type}} -DCMAKE_INSTALL_PREFIX=install \
52123
-DCMAKE_PREFIX_PATH=${{runner.workspace}}/build/install -DCMAKE_CXX_STANDARD=${{matrix.cpp}} \
53-
-DCC_MQTT5_WITH_DEFAULT_SANITIZERS=ON \
124+
-DCC_MQTT5_WITH_DEFAULT_SANITIZERS=${{matrix.sanitize}} \
54125
-DCC_MQTT5_BUILD_UNIT_TESTS=ON -DCC_MQTT5_BUILD_INTEGRATION_TESTS=ON \
55126
-DCC_MQTT5_CUSTOM_CLIENT_CONFIG_FILES="$GITHUB_WORKSPACE/client/lib/script/BareMetalTestConfig.cmake;$GITHUB_WORKSPACE/client/lib/script/Qos0TestConfig.cmake;$GITHUB_WORKSPACE/client/lib/script/Qos1TestConfig.cmake" \
56127
-DCC_MQTT5_CLIENT_AFL_FUZZ=ON
@@ -79,14 +150,84 @@ jobs:
79150
type: [Debug, Release, MinSizeRel]
80151
cc_ver: [12, 13, 14, 15]
81152
cpp: [17, 20]
153+
sanitize: [ON, OFF]
82154
exclude:
155+
- type: Debug
156+
sanitize: OFF
83157
- cc_ver: 12
84158
cpp: 20
85159
- cc_ver: 13
86160
cpp: 20
87161
- cc_ver: 14
88162
cpp: 20
89163

164+
steps:
165+
- uses: actions/checkout@v4
166+
167+
- name: Prepare Install
168+
run: sudo apt-get update --fix-missing
169+
170+
- name: Install Packages
171+
run: sudo apt install libboost-all-dev mosquitto clang-${{matrix.cc_ver}}
172+
173+
- name: Create Build Environment
174+
run: cmake -E make_directory ${{runner.workspace}}/build
175+
176+
- name: Prepare externals
177+
shell: bash
178+
run: $GITHUB_WORKSPACE/script/prepare_externals.sh
179+
env:
180+
BUILD_DIR: ${{runner.workspace}}/build
181+
CC: clang-${{matrix.cc_ver}}
182+
CXX: clang++-${{matrix.cc_ver}}
183+
EXTERNALS_DIR: ${{runner.workspace}}/externals
184+
COMMON_INSTALL_DIR: ${{runner.workspace}}/build/install
185+
COMMON_BUILD_TYPE: ${{matrix.type}}
186+
COMMON_CXX_STANDARD: ${{matrix.cpp}}
187+
COMMS_TAG: ${{env.COMMS_TAG}}
188+
CC_MQTT5_TAG: ${{env.CC_MQTT5_TAG}}
189+
190+
- name: Configure CMake
191+
shell: bash
192+
working-directory: ${{runner.workspace}}/build
193+
run: |
194+
cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=${{matrix.type}} -DCMAKE_INSTALL_PREFIX=install \
195+
-DCMAKE_PREFIX_PATH=${{runner.workspace}}/build/install -DCMAKE_CXX_STANDARD=${{matrix.cpp}} \
196+
-DCC_MQTT5_WITH_DEFAULT_SANITIZERS=${{matrix.sanitize}} \
197+
-DCC_MQTT5_BUILD_UNIT_TESTS=ON -DCC_MQTT5_BUILD_INTEGRATION_TESTS=ON \
198+
-DCC_MQTT5_CUSTOM_CLIENT_CONFIG_FILES="$GITHUB_WORKSPACE/client/lib/script/BareMetalTestConfig.cmake;$GITHUB_WORKSPACE/client/lib/script/Qos0TestConfig.cmake;$GITHUB_WORKSPACE/client/lib/script/Qos1TestConfig.cmake" \
199+
-DCC_MQTT5_CLIENT_AFL_FUZZ=ON
200+
env:
201+
CC: clang-${{matrix.cc_ver}}
202+
CXX: clang++-${{matrix.cc_ver}}
203+
204+
- name: Build Target
205+
working-directory: ${{runner.workspace}}/build
206+
shell: bash
207+
run: cmake --build . --config ${{matrix.type}} --target install
208+
env:
209+
VERBOSE: 1
210+
- name: Testing
211+
working-directory: ${{runner.workspace}}/build
212+
shell: bash
213+
run: ctest -V
214+
215+
build_clang_ubuntu_24_04:
216+
runs-on: ubuntu-24.04
217+
strategy:
218+
fail-fast: false
219+
matrix:
220+
type: [Debug, Release, MinSizeRel]
221+
cc_ver: [16, 17, 18]
222+
cpp: [17, 20, 23]
223+
sanitize: [ON, OFF]
224+
exclude:
225+
- type: Debug
226+
sanitize: OFF
227+
- cc_ver: 16
228+
cpp: 23
229+
- cc_ver: 17
230+
cpp: 23
90231

91232
steps:
92233
- uses: actions/checkout@v4
@@ -120,7 +261,7 @@ jobs:
120261
run: |
121262
cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=${{matrix.type}} -DCMAKE_INSTALL_PREFIX=install \
122263
-DCMAKE_PREFIX_PATH=${{runner.workspace}}/build/install -DCMAKE_CXX_STANDARD=${{matrix.cpp}} \
123-
-DCC_MQTT5_WITH_DEFAULT_SANITIZERS=ON \
264+
-DCC_MQTT5_WITH_DEFAULT_SANITIZERS=${{matrix.sanitize}} \
124265
-DCC_MQTT5_BUILD_UNIT_TESTS=ON -DCC_MQTT5_BUILD_INTEGRATION_TESTS=ON \
125266
-DCC_MQTT5_CUSTOM_CLIENT_CONFIG_FILES="$GITHUB_WORKSPACE/client/lib/script/BareMetalTestConfig.cmake;$GITHUB_WORKSPACE/client/lib/script/Qos0TestConfig.cmake;$GITHUB_WORKSPACE/client/lib/script/Qos1TestConfig.cmake" \
126267
-DCC_MQTT5_CLIENT_AFL_FUZZ=ON
@@ -155,9 +296,10 @@ jobs:
155296
run: cmake -E make_directory ${{runner.workspace}}/build
156297

157298
- name: Install Boost
299+
if: matrix.arch == 'x64'
158300
shell: cmd
159301
run: |
160-
choco install boost-msvc-14.2
302+
choco install boost-msvc-14.2 --version=1.85.0
161303
162304
- name: Prepare externals
163305
shell: cmd
@@ -178,10 +320,13 @@ jobs:
178320
working-directory: ${{runner.workspace}}/build
179321
run: |
180322
cmake %GITHUB_WORKSPACE% -A ${{matrix.arch}} -DCMAKE_BUILD_TYPE=${{matrix.type}} -DCMAKE_INSTALL_PREFIX=install ^
181-
-DCMAKE_PREFIX_PATH=${{runner.workspace}}/build/install -DCMAKE_CXX_STANDARD=${{matrix.cpp}} -DBoost_USE_STATIC_LIBS=ON ^
323+
-DCMAKE_PREFIX_PATH=${{runner.workspace}}/build/install -DCMAKE_CXX_STANDARD=${{matrix.cpp}} ^
324+
-DCMAKE_POLICY_DEFAULT_CMP0167=OLD -DBoost_USE_STATIC_LIBS=ON ^
182325
-DCC_MQTT5_BUILD_UNIT_TESTS=ON ^
183326
-DCC_MQTT5_CUSTOM_CLIENT_CONFIG_FILES="%GITHUB_WORKSPACE%/client/lib/script/BareMetalTestConfig.cmake;%GITHUB_WORKSPACE%/client/lib/script/Qos0TestConfig.cmake;%GITHUB_WORKSPACE%/client/lib/script/Qos1TestConfig.cmake" ^
184-
-DCC_MQTT5_CLIENT_AFL_FUZZ=ON
327+
-DCC_MQTT5_CLIENT_APPS=${{env.HAS_BOOST}} -DCC_MQTT5_CLIENT_AFL_FUZZ=${{env.HAS_BOOST}}
328+
env:
329+
HAS_BOOST: "${{ matrix.arch == 'x64' && 'ON' || 'OFF' }}"
185330

186331
- name: Build Target
187332
working-directory: ${{runner.workspace}}/build
@@ -213,7 +358,7 @@ jobs:
213358
if: matrix.arch == 'x64'
214359
shell: cmd
215360
run: |
216-
choco install boost-msvc-14.3
361+
choco install boost-msvc-14.3 --version=1.85.0
217362
218363
- name: Prepare externals
219364
shell: cmd
@@ -234,7 +379,8 @@ jobs:
234379
working-directory: ${{runner.workspace}}/build
235380
run: |
236381
cmake %GITHUB_WORKSPACE% -A ${{matrix.arch}} -DCMAKE_BUILD_TYPE=${{matrix.type}} -DCMAKE_INSTALL_PREFIX=install ^
237-
-DCMAKE_PREFIX_PATH=${{runner.workspace}}/build/install -DCMAKE_CXX_STANDARD=${{matrix.cpp}} -DBoost_USE_STATIC_LIBS=ON ^
382+
-DCMAKE_PREFIX_PATH=${{runner.workspace}}/build/install -DCMAKE_CXX_STANDARD=${{matrix.cpp}} ^
383+
-DCMAKE_POLICY_DEFAULT_CMP0167=OLD -DBoost_USE_STATIC_LIBS=ON ^
238384
-DCC_MQTT5_BUILD_UNIT_TESTS=ON ^
239385
-DCC_MQTT5_CUSTOM_CLIENT_CONFIG_FILES="%GITHUB_WORKSPACE%/client/lib/script/BareMetalTestConfig.cmake;%GITHUB_WORKSPACE%/client/lib/script/Qos0TestConfig.cmake;%GITHUB_WORKSPACE%/client/lib/script/Qos1TestConfig.cmake" ^
240386
-DCC_MQTT5_CLIENT_APPS=${{env.HAS_BOOST}} -DCC_MQTT5_CLIENT_AFL_FUZZ=${{env.HAS_BOOST}}

CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,12 @@ set(CMAKE_CXX_STANDARD 17 CACHE STRING "The C++ standard to use")
2727

2828
cmake_policy(SET CMP0079 NEW)
2929

30+
if (("${CMAKE_VERSION}" VERSION_GREATER_EQUAL "3.30") AND
31+
(NOT DEFINED CMAKE_POLICY_DEFAULT_CMP0167))
32+
# Find boost cmake configuration from the boost installation
33+
cmake_policy(SET CMP0167 NEW)
34+
endif ()
35+
3036
set (CC_MQTT5_EXTERNALS_DIR "${PROJECT_SOURCE_DIR}/externals")
3137

3238
# Dependencies

client/afl_fuzz/AflFuzz.cpp.templ

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ public:
136136
auto dataLen = static_cast<std::size_t>(len);
137137
bool hasPrevData = false;
138138
if (!m_inData.empty()) {
139+
m_inData.reserve(m_inData.size() + dataLen);
139140
m_inData.insert(m_inData.end(), dataPtr, dataPtr + dataLen);
140141
static const auto MaxLen = std::numeric_limits<unsigned>::max();
141142

@@ -590,6 +591,7 @@ private:
590591
m_generator->setDataReportCb(
591592
[this](const std::uint8_t* buf, std::size_t bufLen)
592593
{
594+
m_inData.reserve(m_inData.size() + bufLen);
593595
m_inData.insert(m_inData.end(), buf, buf + bufLen);
594596
infoLog() << "Appended " << bufLen << " bytes to buffer, totaling " << m_inData.size() << " bytes\n";
595597
});

client/app/common/TcpSession.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ void TcpSession::doRead()
8282
auto buf = &m_inData[0];
8383
auto bufLen = bytesCount;
8484
if (!m_buf.empty()) {
85+
m_buf.reserve(m_buf.size() + bytesCount);
8586
m_buf.insert(m_buf.end(), m_inData.begin(), m_inData.begin() + bytesCount);
8687
buf = &m_buf[0];
8788
bufLen = m_buf.size();
@@ -101,6 +102,7 @@ void TcpSession::doRead()
101102
}
102103

103104
assert(buf == &m_inData[0]);
105+
m_buf.reserve(m_buf.size() + (bytesCount - consumed));
104106
m_buf.insert(m_buf.end(), m_inData.begin() + consumed, m_inData.begin() + bytesCount);
105107
} while (false);
106108

0 commit comments

Comments
 (0)