Skip to content

Commit 845a585

Browse files
committed
Fixed bug in function getPackNumberSize (which caused the crash
application in one case)
1 parent 3405e6c commit 845a585

File tree

2 files changed

+18
-13
lines changed

2 files changed

+18
-13
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ $(BUILDDIR):
2424
$(MKDIR) $@
2525

2626
$(EXECUTABLE): $(OBJECTS)
27-
$(CXX) $(OBJECTS) -o $@ $(LDFLAGS)
27+
$(CXX) $(OBJECTS) -o $@ $(LDFLAGS)
2828

2929
$(OBJECTS) : $(OBJDIR)/%.o : $(SOURCEDIR)/%.cpp
3030
@$(MKDIR) $(dir $@)

src/utils/Utils.cpp

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -233,9 +233,14 @@ namespace Utils
233233
return binToHexString(&time, sizeof(time) );
234234
}
235235

236+
constexpr uint8_t PACK_NUMBER_SIZE_BYTE = 252;
237+
constexpr uint8_t PACK_NUMBER_SIZE_16 = 253;
238+
constexpr uint8_t PACK_NUMBER_SIZE_32 = 254;
239+
constexpr uint8_t PACK_NUMBER_SIZE_MAX = 255;
240+
236241
size_t getPackNumberSize(const size_t number) noexcept
237242
{
238-
if (number <= 253) {
243+
if (number <= PACK_NUMBER_SIZE_BYTE) {
239244
return sizeof(uint8_t);
240245
}
241246
else if (number <= std::numeric_limits<uint16_t>::max() ) {
@@ -259,13 +264,13 @@ namespace Utils
259264

260265
uint8_t *packNumber(uint8_t *dest, const size_t number) noexcept
261266
{
262-
if (number <= 252) {
267+
if (number <= PACK_NUMBER_SIZE_BYTE) {
263268
*dest = number;
264269

265270
dest += sizeof(uint8_t);
266271
}
267272
else if (number <= std::numeric_limits<uint16_t>::max() ) {
268-
*dest = 253;
273+
*dest = PACK_NUMBER_SIZE_16;
269274

270275
dest += sizeof(uint8_t);
271276

@@ -274,15 +279,15 @@ namespace Utils
274279
dest += sizeof(uint16_t);
275280
}
276281
else if (number <= std::numeric_limits<uint32_t>::max() ) {
277-
*dest = 254;
282+
*dest = PACK_NUMBER_SIZE_32;
278283

279284
dest += sizeof(uint8_t);
280285

281286
*reinterpret_cast<uint32_t *>(dest) = static_cast<uint32_t>(number);
282287

283288
dest += sizeof(uint32_t);
284289
} else {
285-
*dest = 255;
290+
*dest = PACK_NUMBER_SIZE_MAX;
286291

287292
dest += sizeof(uint8_t);
288293

@@ -308,24 +313,24 @@ namespace Utils
308313

309314
void packNumber(std::vector<char> &buf, const size_t number)
310315
{
311-
if (number <= 252) {
316+
if (number <= PACK_NUMBER_SIZE_BYTE) {
312317
buf.emplace_back(number);
313318
}
314319
else if (number <= std::numeric_limits<uint16_t>::max() ) {
315-
buf.emplace_back(253);
320+
buf.emplace_back(PACK_NUMBER_SIZE_16);
316321

317322
buf.resize(buf.size() + sizeof(uint16_t) );
318323

319324
*reinterpret_cast<uint16_t *>(buf.data() + buf.size() - sizeof(uint16_t) ) = static_cast<uint16_t>(number);
320325
}
321326
else if (number <= std::numeric_limits<uint32_t>::max() ) {
322-
buf.emplace_back(254);
327+
buf.emplace_back(PACK_NUMBER_SIZE_32);
323328

324329
buf.resize(buf.size() + sizeof(uint32_t) );
325330

326331
*reinterpret_cast<uint32_t *>(buf.data() + buf.size() - sizeof(uint32_t) ) = static_cast<uint32_t>(number);
327332
} else {
328-
buf.emplace_back(255);
333+
buf.emplace_back(PACK_NUMBER_SIZE_MAX);
329334

330335
buf.resize(buf.size() + sizeof(size_t) );
331336

@@ -353,14 +358,14 @@ namespace Utils
353358

354359
src += sizeof(uint8_t);
355360

356-
if (*number <= 252) {
361+
if (*number <= PACK_NUMBER_SIZE_BYTE) {
357362

358363
}
359-
else if (*number == 253) {
364+
else if (*number == PACK_NUMBER_SIZE_16) {
360365
*number = *reinterpret_cast<const uint16_t *>(src);
361366
src += sizeof(uint16_t);
362367
}
363-
else if (*number == 254) {
368+
else if (*number == PACK_NUMBER_SIZE_32) {
364369
*number = *reinterpret_cast<const uint32_t *>(src);
365370
src += sizeof(uint32_t);
366371
} else {

0 commit comments

Comments
 (0)