mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2024-12-26 04:11:18 +00:00
Use rand_s for Windoze
unsigned int is always 4 bytes on windows btw, so this should align properly.
This commit is contained in:
parent
b8bfe9b83a
commit
81a7103b73
1 changed files with 24 additions and 10 deletions
34
src/stun.c
34
src/stun.c
|
@ -14,7 +14,7 @@
|
||||||
#if defined (__linux__)
|
#if defined (__linux__)
|
||||||
#include <sys/random.h>
|
#include <sys/random.h>
|
||||||
#elif defined (_WIN32)
|
#elif defined (_WIN32)
|
||||||
//#include <ntsecapi.h>
|
#define _CRT_RAND_S
|
||||||
#elif defined (__APPLE__)
|
#elif defined (__APPLE__)
|
||||||
#include <CommonCrypto/CommonRandom.h>
|
#include <CommonCrypto/CommonRandom.h>
|
||||||
#else
|
#else
|
||||||
|
@ -85,6 +85,28 @@ STUN_node (void)
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
csprng
|
||||||
|
(
|
||||||
|
void * const buffer,
|
||||||
|
const size_t size
|
||||||
|
){
|
||||||
|
#if defined (_WIN32)
|
||||||
|
size_t o;
|
||||||
|
|
||||||
|
for (o = 0; o < size; o += sizeof (unsigned int))
|
||||||
|
{
|
||||||
|
rand_s((unsigned int *)&((char *)buffer)[o]);
|
||||||
|
}
|
||||||
|
#elif defined (__linux__)
|
||||||
|
getrandom(buffer, size, 0U);
|
||||||
|
#elif defined (__APPLE__)
|
||||||
|
CCRandomGenerateBytes(buffer, size);
|
||||||
|
#elif defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__)
|
||||||
|
arc4random_buf(buffer, size);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
STUN_bind (stun_callback_t callback)
|
STUN_bind (stun_callback_t callback)
|
||||||
{
|
{
|
||||||
|
@ -97,15 +119,7 @@ STUN_bind (stun_callback_t callback)
|
||||||
doomcom->remotenode = node;
|
doomcom->remotenode = node;
|
||||||
doomcom->datalength = 20;
|
doomcom->datalength = 20;
|
||||||
|
|
||||||
#if defined (__linux__)
|
csprng(transaction_id, 12U);
|
||||||
getrandom(transaction_id, 12U, 0U);
|
|
||||||
#elif defined (_WIN32)
|
|
||||||
//RtlGenRandom(transaction_id, 12UL);
|
|
||||||
#elif defined (__APPLE__)
|
|
||||||
CCRandomGenerateBytes(stun_transcation_id, 12U);
|
|
||||||
#elif defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__)
|
|
||||||
arc4random_buf(transaction_id, 12U);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
memcpy(&doomcom->data[0], &type, 2U);
|
memcpy(&doomcom->data[0], &type, 2U);
|
||||||
memset(&doomcom->data[2], 0, 2U);
|
memset(&doomcom->data[2], 0, 2U);
|
||||||
|
|
Loading…
Reference in a new issue