diff --git a/engine/client/m_download.c b/engine/client/m_download.c index a4ff1a7bb..04fbfd05c 100644 --- a/engine/client/m_download.c +++ b/engine/client/m_download.c @@ -2324,6 +2324,10 @@ static void PM_PackageEnabled(package_t *p) return; } +#ifndef HAVE_CLIENT +#define Menu_Prompt(cb,ctx,msg,yes,no,cancel) Con_Printf(CON_WARNING msg "\n") +#endif + if (FS_NativePath(ef->name, p->fsroot, native, sizeof(native)) && Sys_SetUpdatedBinary(native)) Menu_Prompt(NULL, NULL, "Engine binary updated.\nRestart to use.", NULL, NULL, NULL); else diff --git a/engine/server/sv_master.c b/engine/server/sv_master.c index e0be829af..3ad383f22 100644 --- a/engine/server/sv_master.c +++ b/engine/server/sv_master.c @@ -793,17 +793,12 @@ static svm_server_t *SVM_Heartbeat(const char *gamename, netadr_t *adr, int numc return server; } -#ifdef TCPCONNECT -void tobase64(unsigned char *out, int outlen, unsigned char *in, int inlen); -#endif void SVM_GenChallenge(char *out, size_t outsize, netadr_t *foradr) { //this function needs to return some sort of unguessable string so that you can't spoof the server with fake responses char adr[64]; static char randumb[16]; - const unsigned char *strings[] = {randumb, (const unsigned char *)NET_AdrToString(adr, sizeof(adr), foradr)}; - size_t lengths[] = {sizeof(randumb)-1, strlen(strings[1])}; - char digest[4*5]; - int digestsize; + char digest[256]; + void *ctx = alloca(hash_sha1.contextsize); if (!*randumb) { @@ -813,15 +808,14 @@ void SVM_GenChallenge(char *out, size_t outsize, netadr_t *foradr) while (!randumb[i]) randumb[i] = rand(); } + NET_AdrToString(adr, sizeof(adr), foradr); - digestsize = SHA1_m(digest, sizeof(digest), countof(lengths), strings, lengths); + hash_sha1.init(ctx); + hash_sha1.process(ctx, randumb, sizeof(randumb)-1); + hash_sha1.process(ctx, adr, strlen(adr)); + hash_sha1.terminate(digest, ctx); -#ifdef TCPCONNECT - tobase64(out, outsize, digest, min(16, digestsize)); //truncate it, so its not excessive -#else - Q_snprintfz(out, outsize, "%08x", *(int*)digest); - (void)digestsize; -#endif + Base64_EncodeBlock(digest, hash_sha1.digestsize, out, outsize); } //switch net_from's reported connection, so we reply from a different udp socket from the one a packet was received from.