Commit 254a4a56 authored by Johannes Hayeß's avatar Johannes Hayeß Committed by Hubert Chathi
Browse files

Fix building of tests with MSVC



Hi,

currently tests don't build with MSVC, because the Base64 test tries to initialize multiple arrays with a length value that was derived from a non-const context. I have fixed this by using vectors instead.

Sincerely

Johannes Hayeß

From 2d76972a862f0aa04b5011537bef71a49aa82a03 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Johannes=20Haye=C3=9F?= <jhaye@mailbox.org>
Date: Sun, 27 Jun 2021 17:46:24 +0200
Subject: [PATCH] Fix compiling with MSVC
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Previously attempts to initialize arrays with non-const value. This
seemingly works on GCC/clang due to their static code analysis, but
fails with MSVC. This switches to dynamic memory allocation with
std::vector, to solve the problem.
Signed-off-by: default avatarJohannes Hayeß <jhaye@mailbox.org>
parent abf8f974
Pipeline #6962 passed with stages
in 2 minutes and 17 seconds
#include "olm/base64.hh"
#include "olm/base64.h"
#include "unittest.hh"
#include <cstring>
#include <vector>
int main() {
......@@ -68,7 +70,6 @@ assert_equals(expected_output, output, output_length);
{
TestCase test_case("Decoding base64 of invalid length fails with -1");
#include <iostream>
std::uint8_t input[] = "SGVsbG8gV29ybGQab";
std::size_t input_length = sizeof(input) - 1;
......@@ -76,14 +77,12 @@ std::size_t input_length = sizeof(input) - 1;
* Nothing will be written to the output buffer anyway because the input is
* invalid. */
std::size_t buf_length = olm::decode_base64_length(input_length + 1);
std::uint8_t output[buf_length];
std::uint8_t expected_output[buf_length];
memset(output, 0, buf_length);
memset(expected_output, 0, buf_length);
std::vector<std::uint8_t> output(buf_length, 0);
std::vector<std::uint8_t> expected_output(buf_length, 0);
std::size_t output_length = ::_olm_decode_base64(input, input_length, output);
std::size_t output_length = ::_olm_decode_base64(input, input_length, output.data());
assert_equals(std::size_t(-1), output_length);
assert_equals(0, memcmp(output, expected_output, buf_length));
assert_equals(0, memcmp(output.data(), expected_output.data(), buf_length));
}
}
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