mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-23 20:03:31 +01:00
Windows lacks truncate(3).
Fix the new crypto tests, which used truncate(3).
This commit is contained in:
parent
5dbb0bdae9
commit
9abd7b8f90
@ -432,6 +432,7 @@ AC_CHECK_FUNCS(
|
||||
strtoull \
|
||||
sysconf \
|
||||
sysctl \
|
||||
truncate \
|
||||
uname \
|
||||
usleep \
|
||||
vasprintf \
|
||||
|
@ -1322,6 +1322,29 @@ test_crypto_pk_base64(void *arg)
|
||||
tor_free(encoded);
|
||||
}
|
||||
|
||||
#ifdef HAVE_TRUNCATE
|
||||
#define do_truncate truncate
|
||||
#else
|
||||
static int
|
||||
do_truncate(const char *fname, size_t len)
|
||||
{
|
||||
struct stat st;
|
||||
char *bytes;
|
||||
|
||||
bytes = read_file_to_str(fname, RFTS_BIN, &st);
|
||||
if (!bytes)
|
||||
return -1;
|
||||
/* This cast isn't so great, but it should be safe given the actual files
|
||||
* and lengths we're using. */
|
||||
if (st.st_size < (off_t)len)
|
||||
len = MIN(len, (size_t)st.st_size);
|
||||
|
||||
int r = write_bytes_to_file(fname, bytes, len, 1);
|
||||
tor_free(bytes);
|
||||
return r;
|
||||
}
|
||||
#endif
|
||||
|
||||
/** Sanity check for crypto pk digests */
|
||||
static void
|
||||
test_crypto_digests(void *arg)
|
||||
@ -2664,8 +2687,8 @@ test_crypto_ed25519_storage(void *arg)
|
||||
tor_free(tag);
|
||||
|
||||
/* whitebox test: truncated keys. */
|
||||
tt_int_op(0, ==, truncate(fname_1, 40));
|
||||
tt_int_op(0, ==, truncate(fname_2, 40));
|
||||
tt_int_op(0, ==, do_truncate(fname_1, 40));
|
||||
tt_int_op(0, ==, do_truncate(fname_2, 40));
|
||||
tt_int_op(-1, OP_EQ, ed25519_pubkey_read_from_file(&pub, &tag, fname_2));
|
||||
tt_ptr_op(tag, OP_EQ, NULL);
|
||||
tor_free(tag);
|
||||
|
Loading…
Reference in New Issue
Block a user