more test fixes

This commit is contained in:
Adam Ierymenko 2020-03-14 15:27:01 -07:00
parent eebe2046f0
commit 4b20638568
No known key found for this signature in database
GPG key ID: C8877CF2D7A5D7F3
4 changed files with 45 additions and 32 deletions

View file

@ -15,7 +15,23 @@
namespace ZeroTier { namespace ZeroTier {
bool Endpoint::operator==(const Endpoint &ep) const Endpoint::Endpoint(const InetAddress &sa,const Protocol proto) noexcept
{
switch (sa.family()) {
case AF_INET:
_t = TYPE_INETADDR_V4;
break;
case AF_INET6:
_t = TYPE_INETADDR_V6;
default:
_t = TYPE_NIL;
return;
}
asInetAddress(_v.in.sa) = sa;
_v.in.proto = (uint8_t)proto;
}
bool Endpoint::operator==(const Endpoint &ep) const noexcept
{ {
if (_t == ep._t) { if (_t == ep._t) {
switch(_t) { switch(_t) {
@ -31,7 +47,7 @@ bool Endpoint::operator==(const Endpoint &ep) const
return false; return false;
} }
bool Endpoint::operator<(const Endpoint &ep) const bool Endpoint::operator<(const Endpoint &ep) const noexcept
{ {
if ((int)_t < (int)ep._t) { if ((int)_t < (int)ep._t) {
return true; return true;

View file

@ -70,37 +70,23 @@ public:
ZT_INLINE Endpoint() noexcept { memoryZero(this); } ZT_INLINE Endpoint() noexcept { memoryZero(this); }
ZT_INLINE Endpoint(const InetAddress &sa,const Protocol proto = PROTO_UDP_ZT) explicit Endpoint(const InetAddress &sa,const Protocol proto = PROTO_UDP_ZT) noexcept;
{
switch (sa.family()) {
case AF_INET:
_t = TYPE_INETADDR_V4;
break;
case AF_INET6:
_t = TYPE_INETADDR_V6;
default:
_t = TYPE_NIL;
return;
}
asInetAddress(_v.in.sa) = sa;
_v.in.proto = (uint8_t)proto;
}
ZT_INLINE Endpoint(const Address &zt,const uint8_t identityHash[ZT_IDENTITY_HASH_SIZE]) : explicit ZT_INLINE Endpoint(const Address &zt,const uint8_t identityHash[ZT_IDENTITY_HASH_SIZE]) noexcept :
_t(TYPE_ZEROTIER) _t(TYPE_ZEROTIER)
{ {
_v.zt.address = zt.toInt(); _v.zt.address = zt.toInt();
memcpy(_v.zt.hash,identityHash,ZT_IDENTITY_HASH_SIZE); memcpy(_v.zt.hash,identityHash,ZT_IDENTITY_HASH_SIZE);
} }
ZT_INLINE Endpoint(const char *name,const int port) : explicit ZT_INLINE Endpoint(const char *name,const int port) noexcept :
_t(TYPE_DNSNAME) _t(TYPE_DNSNAME)
{ {
_v.dns.port = port; _v.dns.port = port;
Utils::scopy(_v.dns.name,sizeof(_v.dns.name),name); Utils::scopy(_v.dns.name,sizeof(_v.dns.name),name);
} }
explicit ZT_INLINE Endpoint(const char *url) : explicit ZT_INLINE Endpoint(const char *url) noexcept :
_t(TYPE_URL) _t(TYPE_URL)
{ {
Utils::scopy(_v.url,sizeof(_v.url),url); Utils::scopy(_v.url,sizeof(_v.url),url);
@ -153,12 +139,12 @@ public:
ZT_INLINE operator bool() const noexcept { return _t != TYPE_NIL; } ZT_INLINE operator bool() const noexcept { return _t != TYPE_NIL; }
bool operator==(const Endpoint &ep) const; bool operator==(const Endpoint &ep) const noexcept;
ZT_INLINE bool operator!=(const Endpoint &ep) const { return (!(*this == ep)); } ZT_INLINE bool operator!=(const Endpoint &ep) const noexcept { return (!(*this == ep)); }
bool operator<(const Endpoint &ep) const; bool operator<(const Endpoint &ep) const noexcept;
ZT_INLINE bool operator>(const Endpoint &ep) const { return (ep < *this); } ZT_INLINE bool operator>(const Endpoint &ep) const noexcept { return (ep < *this); }
ZT_INLINE bool operator<=(const Endpoint &ep) const { return !(ep < *this); } ZT_INLINE bool operator<=(const Endpoint &ep) const noexcept { return !(ep < *this); }
ZT_INLINE bool operator>=(const Endpoint &ep) const { return !(*this < ep); } ZT_INLINE bool operator>=(const Endpoint &ep) const noexcept { return !(*this < ep); }
static constexpr int marshalSizeMax() noexcept { return ZT_ENDPOINT_MARSHAL_SIZE_MAX; } static constexpr int marshalSizeMax() noexcept { return ZT_ENDPOINT_MARSHAL_SIZE_MAX; }
int marshal(uint8_t data[ZT_ENDPOINT_MARSHAL_SIZE_MAX]) const noexcept; int marshal(uint8_t data[ZT_ENDPOINT_MARSHAL_SIZE_MAX]) const noexcept;

View file

@ -789,6 +789,14 @@ extern "C" const char *ZTT_crypto()
ZT_T_PRINTF("FAILED (%.16llx)" ZT_EOL_S,proof); ZT_T_PRINTF("FAILED (%.16llx)" ZT_EOL_S,proof);
return "MIMC52 failed simple delay/verify test"; return "MIMC52 failed simple delay/verify test";
} }
for(int i=0;i<1024;++i) {
uint64_t in = Utils::random();
unsigned long r = 1 + (unsigned long)(Utils::random() % 1024);
if (!mimc52Verify(&in,sizeof(in),r,mimc52Delay(&in,sizeof(in),r))) {
ZT_T_PRINTF("FAILED (random input test)");
return "MIMC52 failed random input test";
}
}
ZT_T_PRINTF("OK (%.16llx)" ZT_EOL_S,proof); ZT_T_PRINTF("OK (%.16llx)" ZT_EOL_S,proof);
} }

View file

@ -439,7 +439,7 @@ uint64_t random() noexcept
return result; return result;
} }
bool scopy(char *dest,unsigned int len,const char *src) noexcept bool scopy(char *const dest,const unsigned int len,const char *const src) noexcept
{ {
if (!len) if (!len)
return false; // sanity check return false; // sanity check
@ -447,14 +447,17 @@ bool scopy(char *dest,unsigned int len,const char *src) noexcept
*dest = (char)0; *dest = (char)0;
return true; return true;
} }
char *const end = dest + len; unsigned int i = 0;
while ((*dest++ = *src++)) { for(;;) {
if (dest == end) { if (i >= len) {
*(--dest) = (char)0; dest[len - 1] = 0;
return false; return false;
} }
} const char c = src[i];
dest[i] = c;
if (c == 0)
return true; return true;
}
} }
} // namespace Utils } // namespace Utils