Fix warnings on 32-bit builds.

When size_t is the most memory you can have, make sure that things
referring to real parts of memory are size_t, not uint64_t or off_t.

But not on any released Tor.
This commit is contained in:
Nick Mathewson 2014-09-25 17:50:13 -04:00
parent 1c5d680b3d
commit 9190468246
4 changed files with 9 additions and 7 deletions

View File

@ -181,6 +181,7 @@ crypto_read_tagged_contents_from_file(const char *fname,
char *content = NULL; char *content = NULL;
struct stat st; struct stat st;
ssize_t r = -1; ssize_t r = -1;
size_t st_size;
*tag_out = NULL; *tag_out = NULL;
st.st_size = 0; st.st_size = 0;
@ -189,6 +190,7 @@ crypto_read_tagged_contents_from_file(const char *fname,
goto end; goto end;
if (st.st_size < 32 || st.st_size > 32 + data_out_len) if (st.st_size < 32 || st.st_size > 32 + data_out_len)
goto end; goto end;
st_size = (size_t)st.st_size;
memcpy(prefix, content, 32); memcpy(prefix, content, 32);
prefix[32] = 0; prefix[32] = 0;
@ -205,12 +207,12 @@ crypto_read_tagged_contents_from_file(const char *fname,
*tag_out = tor_strndup(prefix+5+strlen(typestring), *tag_out = tor_strndup(prefix+5+strlen(typestring),
strlen(prefix)-8-strlen(typestring)); strlen(prefix)-8-strlen(typestring));
memcpy(data_out, content+32, st.st_size-32); memcpy(data_out, content+32, st_size-32);
r = st.st_size - 32; r = st_size - 32;
end: end:
if (content) if (content)
memwipe(content, 0, st.st_size); memwipe(content, 0, st_size);
tor_free(content); tor_free(content);
return r; return r;
} }

View File

@ -9,11 +9,11 @@ int ed25519_ref10_pubkey(unsigned char *pk,const unsigned char *sk);
int ed25519_ref10_keygen(unsigned char *pk,unsigned char *sk); int ed25519_ref10_keygen(unsigned char *pk,unsigned char *sk);
int ed25519_ref10_open( int ed25519_ref10_open(
const unsigned char *signature, const unsigned char *signature,
const unsigned char *m,uint64_t mlen, const unsigned char *m, size_t mlen,
const unsigned char *pk); const unsigned char *pk);
int ed25519_ref10_sign( int ed25519_ref10_sign(
unsigned char *sig, unsigned char *sig,
const unsigned char *m,uint64_t mlen, const unsigned char *m, size_t mlen,
const unsigned char *sk, const unsigned char *pk); const unsigned char *sk, const unsigned char *pk);
/* Added in Tor */ /* Added in Tor */

View File

@ -9,7 +9,7 @@
/* 'signature' must be 64-bytes long. */ /* 'signature' must be 64-bytes long. */
int crypto_sign_open( int crypto_sign_open(
const unsigned char *signature, const unsigned char *signature,
const unsigned char *m,uint64_t mlen, const unsigned char *m, size_t mlen,
const unsigned char *pk const unsigned char *pk
) )
{ {

View File

@ -7,7 +7,7 @@
int crypto_sign( int crypto_sign(
unsigned char *sig, unsigned char *sig,
const unsigned char *m,uint64_t mlen, const unsigned char *m, size_t mlen,
const unsigned char *sk,const unsigned char *pk const unsigned char *sk,const unsigned char *pk
) )
{ {