Treat request bytes as an unsigned type
continuous-integration/drone/push Build is passing Details

pull/4/head
Clément FRÉVILLE 2 years ago
parent 913b6ee15b
commit 34335045ca

@ -87,16 +87,16 @@ int main(int argc, char **argv) {
receiver.recv(request);
if (request.size() < MIN_MESSAGE_LEN) {
std::cerr << "Invalid request" << std::endl;
break;
continue;
}
std::string jobId(static_cast<char *>(request.data()), JOB_ID_LEN);
uint32_t imageLen = sk::read_uint32(static_cast<char *>(request.data()) + JOB_ID_LEN);
uint32_t codeLen = sk::read_uint32(static_cast<char *>(request.data()) + JOB_ID_LEN + sizeof(uint32_t));
uint32_t imageLen = sk::read_uint32(static_cast<std::byte *>(request.data()) + JOB_ID_LEN);
uint32_t codeLen = sk::read_uint32(static_cast<std::byte *>(request.data()) + JOB_ID_LEN + sizeof(uint32_t));
if (request.size() < MIN_MESSAGE_LEN + imageLen + codeLen) {
std::cerr << "Invalid request" << std::endl;
break;
continue;
}
std::string imageString(static_cast<char *>(request.data()) + MIN_MESSAGE_LEN, imageLen);
std::string requestString(static_cast<char *>(request.data()) + MIN_MESSAGE_LEN + imageLen, codeLen);
@ -110,7 +110,7 @@ int main(int argc, char **argv) {
// Send the job id, the exit code and result.out to sink
zmq::message_t reply(JOB_ID_LEN + sizeof(uint32_t) + result.out.size());
memcpy(reply.data(), jobId.data(), JOB_ID_LEN);
sk::write_uint32(static_cast<char *>(reply.data()) + JOB_ID_LEN, result.exit_code);
sk::write_uint32(static_cast<std::byte *>(reply.data()) + JOB_ID_LEN, result.exit_code);
memcpy(static_cast<char *>(reply.data()) + JOB_ID_LEN + sizeof(uint32_t), result.out.data(), result.out.size());
sender.send(reply, zmq::send_flags::none);
}

@ -1,11 +1,11 @@
#include "network.hpp"
namespace sk {
uint32_t read_uint32(const char *buffer) { return static_cast<uint32_t>(buffer[3]) | static_cast<uint32_t>(buffer[2]) << 8 | static_cast<uint32_t>(buffer[1]) << 16 | static_cast<uint32_t>(buffer[0]) << 24; }
void write_uint32(char *buffer, uint32_t value) {
buffer[0] = static_cast<char>(value >> 24);
buffer[1] = static_cast<char>(value >> 16);
buffer[2] = static_cast<char>(value >> 8);
buffer[3] = static_cast<char>(value);
uint32_t read_uint32(const std::byte *buffer) { return static_cast<uint32_t>(buffer[3]) | static_cast<uint32_t>(buffer[2]) << 8 | static_cast<uint32_t>(buffer[1]) << 16 | static_cast<uint32_t>(buffer[0]) << 24; }
void write_uint32(std::byte *buffer, uint32_t value) {
buffer[0] = static_cast<std::byte>(value >> 24);
buffer[1] = static_cast<std::byte>(value >> 16);
buffer[2] = static_cast<std::byte>(value >> 8);
buffer[3] = static_cast<std::byte>(value);
}
}

@ -1,8 +1,9 @@
#pragma once
#include <cstddef>
#include <cstdint>
namespace sk {
uint32_t read_uint32(const char *buffer);
void write_uint32(char *buffer, uint32_t value);
uint32_t read_uint32(const std::byte *buffer);
void write_uint32(std::byte *buffer, uint32_t value);
}

Loading…
Cancel
Save