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

This commit is contained in:
Richard van der Hoff 2016-04-26 18:10:13 +01:00
parent 9b010290a4
commit 11dbf2aab3
9 changed files with 83 additions and 52 deletions

View file

@ -23,7 +23,7 @@ if not os.path.exists("build"):
source_files = glob.glob("src/*.cpp") 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 += source_files
compile_args += sys.argv[1:] compile_args += sys.argv[1:]

View file

@ -23,11 +23,9 @@ namespace olm {
/** /**
* The number of bytes of unpadded base64 needed to encode a length of input. * 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 std::size_t input_length
) { );
return 4 * ((input_length + 2) / 3) + (input_length + 2) % 3 - 2;
}
/** /**
* Encode the raw input as unpadded base64. * Encode the raw input as unpadded base64.

View file

@ -23,58 +23,38 @@
namespace olm { namespace olm {
static std::size_t pickle_length( inline std::size_t pickle_length(
const std::uint32_t & value const std::uint32_t & value
) { ) {
return 4; return 4;
} }
std::uint8_t * pickle(
static std::uint8_t * pickle(
std::uint8_t * pos, std::uint8_t * pos,
std::uint32_t value std::uint32_t value
) { );
pos += 4;
for (unsigned i = 4; i--;) { *(--pos) = value; value >>= 8; }
return pos + 4;
}
std::uint8_t const * unpickle(
static std::uint8_t const * unpickle(
std::uint8_t const * pos, std::uint8_t const * end, std::uint8_t const * pos, std::uint8_t const * end,
std::uint32_t & value 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 const bool & value
) { ) {
return 1; return 1;
} }
std::uint8_t * pickle(
static std::uint8_t * pickle(
std::uint8_t * pos, std::uint8_t * pos,
bool value bool value
) { );
*(pos++) = value ? 1 : 0;
return pos;
}
std::uint8_t const * unpickle(
static std::uint8_t const * unpickle(
std::uint8_t const * pos, std::uint8_t const * end, std::uint8_t const * pos, std::uint8_t const * end,
bool & value bool & value
) { );
if (pos == end) return end;
value = *(pos++);
return pos;
}
template<typename T, std::size_t max_size> 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 * pos,
std::uint8_t const * bytes, std::size_t bytes_length std::uint8_t const * bytes, std::size_t bytes_length
) { );
std::memcpy(pos, bytes, bytes_length);
return pos + bytes_length;
}
std::uint8_t const * unpickle_bytes(
static std::uint8_t const * unpickle_bytes(
std::uint8_t const * pos, std::uint8_t const * end, std::uint8_t const * pos, std::uint8_t const * end,
std::uint8_t * bytes, std::size_t bytes_length 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( std::size_t pickle_length(

View file

@ -19,7 +19,7 @@
namespace olm { namespace olm {
class Account; struct Account;
enum struct MessageType { enum struct MessageType {
PRE_KEY = 0, PRE_KEY = 0,

View file

@ -23,7 +23,7 @@
namespace olm { namespace olm {
class Ed25519PublicKey; struct Ed25519PublicKey;
struct Utility { struct Utility {

View file

@ -45,6 +45,7 @@ optimize_opts = os.environ.get("OPTIMIZE_FLAGS", "-O3")
compile_args = [emcc] compile_args = [emcc]
compile_args += optimize_opts.split() compile_args += optimize_opts.split()
compile_args += ["-Wall"]
compile_args += """ compile_args += """
-Iinclude -Iinclude
-Ilib -Ilib

View file

@ -45,6 +45,12 @@ static const std::uint8_t DECODE_BASE64[128] = {
} // namespace } // 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 * olm::encode_base64(
std::uint8_t const * input, std::size_t input_length, std::uint8_t const * input, std::size_t input_length,
std::uint8_t * output std::uint8_t * output

View file

@ -136,7 +136,7 @@ static std::uint8_t const * decode(
std::uint8_t const * len_start = pos; std::uint8_t const * len_start = pos;
pos = varint_skip(pos, end); pos = varint_skip(pos, end);
std::size_t len = varint_decode<std::size_t>(len_start, pos); 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 = pos;
value_length = len; value_length = len;
pos += len; pos += len;
@ -157,7 +157,7 @@ static std::uint8_t const * skip_unknown(
std::uint8_t const * len_start = pos; std::uint8_t const * len_start = pos;
pos = varint_skip(pos, end); pos = varint_skip(pos, end);
std::size_t len = varint_decode<std::size_t>(len_start, pos); 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; pos += len;
} else { } else {
return end; return end;

View file

@ -14,6 +14,60 @@
*/ */
#include "olm/pickle.hh" #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( std::size_t olm::pickle_length(
const olm::Curve25519PublicKey & value const olm::Curve25519PublicKey & value