Commit 11dbf2aa authored by Richard van der Hoff's avatar Richard van der Hoff
Browse files

Fix a bunch of compiler warnings, and turn on warnings.

parent 9b010290
......@@ -23,7 +23,7 @@ if not os.path.exists("build"):
source_files = glob.glob("src/*.cpp")
compile_args = "g++ -O3 -Iinclude -Ilib --std=c++11 --shared -fPIC".split()
compile_args = "g++ -Wall -O3 -Iinclude -Ilib --std=c++11 --shared -fPIC".split()
compile_args += source_files
compile_args += sys.argv[1:]
......
......@@ -23,11 +23,9 @@ namespace olm {
/**
* The number of bytes of unpadded base64 needed to encode a length of input.
*/
static std::size_t encode_base64_length(
std::size_t encode_base64_length(
std::size_t input_length
) {
return 4 * ((input_length + 2) / 3) + (input_length + 2) % 3 - 2;
}
);
/**
* Encode the raw input as unpadded base64.
......
......@@ -23,58 +23,38 @@
namespace olm {
static std::size_t pickle_length(
inline std::size_t pickle_length(
const std::uint32_t & value
) {
return 4;
}
static std::uint8_t * pickle(
std::uint8_t * pickle(
std::uint8_t * pos,
std::uint32_t value
) {
pos += 4;
for (unsigned i = 4; i--;) { *(--pos) = value; value >>= 8; }
return pos + 4;
}
);
static std::uint8_t const * unpickle(
std::uint8_t const * unpickle(
std::uint8_t const * pos, std::uint8_t const * end,
std::uint32_t & value
) {
value = 0;
if (end - pos < 4) return end;
for (unsigned i = 4; i--;) { value <<= 8; value |= *(pos++); }
return pos;
}
);
static std::size_t pickle_length(
inline std::size_t pickle_length(
const bool & value
) {
return 1;
}
static std::uint8_t * pickle(
std::uint8_t * pickle(
std::uint8_t * pos,
bool value
) {
*(pos++) = value ? 1 : 0;
return pos;
}
);
static std::uint8_t const * unpickle(
std::uint8_t const * unpickle(
std::uint8_t const * pos, std::uint8_t const * end,
bool & value
) {
if (pos == end) return end;
value = *(pos++);
return pos;
}
);
template<typename T, std::size_t max_size>
......@@ -117,23 +97,15 @@ std::uint8_t const * unpickle(
}
static std::uint8_t * pickle_bytes(
std::uint8_t * pickle_bytes(
std::uint8_t * pos,
std::uint8_t const * bytes, std::size_t bytes_length
) {
std::memcpy(pos, bytes, bytes_length);
return pos + bytes_length;
}
);
static std::uint8_t const * unpickle_bytes(
std::uint8_t const * unpickle_bytes(
std::uint8_t const * pos, std::uint8_t const * end,
std::uint8_t * bytes, std::size_t bytes_length
) {
if (end - pos < bytes_length) return end;
std::memcpy(bytes, pos, bytes_length);
return pos + bytes_length;
}
);
std::size_t pickle_length(
......
......@@ -19,7 +19,7 @@
namespace olm {
class Account;
struct Account;
enum struct MessageType {
PRE_KEY = 0,
......
......@@ -23,7 +23,7 @@
namespace olm {
class Ed25519PublicKey;
struct Ed25519PublicKey;
struct Utility {
......
......@@ -45,6 +45,7 @@ optimize_opts = os.environ.get("OPTIMIZE_FLAGS", "-O3")
compile_args = [emcc]
compile_args += optimize_opts.split()
compile_args += ["-Wall"]
compile_args += """
-Iinclude
-Ilib
......
......@@ -45,6 +45,12 @@ static const std::uint8_t DECODE_BASE64[128] = {
} // namespace
std::size_t olm::encode_base64_length(
std::size_t input_length
) {
return 4 * ((input_length + 2) / 3) + (input_length + 2) % 3 - 2;
}
std::uint8_t * olm::encode_base64(
std::uint8_t const * input, std::size_t input_length,
std::uint8_t * output
......
......@@ -136,7 +136,7 @@ static std::uint8_t const * decode(
std::uint8_t const * len_start = pos;
pos = varint_skip(pos, end);
std::size_t len = varint_decode<std::size_t>(len_start, pos);
if (len > end - pos) return end;
if (len + pos > end) return end;
value = pos;
value_length = len;
pos += len;
......@@ -157,7 +157,7 @@ static std::uint8_t const * skip_unknown(
std::uint8_t const * len_start = pos;
pos = varint_skip(pos, end);
std::size_t len = varint_decode<std::size_t>(len_start, pos);
if (len > end - pos) return end;
if (len + pos > end) return end;
pos += len;
} else {
return end;
......
......@@ -14,6 +14,60 @@
*/
#include "olm/pickle.hh"
std::uint8_t * olm::pickle(
std::uint8_t * pos,
std::uint32_t value
) {
pos += 4;
for (unsigned i = 4; i--;) { *(--pos) = value; value >>= 8; }
return pos + 4;
}
std::uint8_t const * olm::unpickle(
std::uint8_t const * pos, std::uint8_t const * end,
std::uint32_t & value
) {
value = 0;
if (end < pos + 4) return end;
for (unsigned i = 4; i--;) { value <<= 8; value |= *(pos++); }
return pos;
}
std::uint8_t * olm::pickle(
std::uint8_t * pos,
bool value
) {
*(pos++) = value ? 1 : 0;
return pos;
}
std::uint8_t const * olm::unpickle(
std::uint8_t const * pos, std::uint8_t const * end,
bool & value
) {
if (pos == end) return end;
value = *(pos++);
return pos;
}
std::uint8_t * olm::pickle_bytes(
std::uint8_t * pos,
std::uint8_t const * bytes, std::size_t bytes_length
) {
std::memcpy(pos, bytes, bytes_length);
return pos + bytes_length;
}
std::uint8_t const * olm::unpickle_bytes(
std::uint8_t const * pos, std::uint8_t const * end,
std::uint8_t * bytes, std::size_t bytes_length
) {
if (end < pos + bytes_length) return end;
std::memcpy(bytes, pos, bytes_length);
return pos + bytes_length;
}
std::size_t olm::pickle_length(
const olm::Curve25519PublicKey & value
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment