From 67a56553b44f9c7d3718eb51b295bab8cd5d74a4 Mon Sep 17 00:00:00 2001 From: Pekka Riikonen Date: Sun, 3 Apr 2005 20:16:27 +0000 Subject: [PATCH] =?utf8?q?=09Added=20getrusage()=20to=20take=20noise.=20?= =?utf8?q?=20A=20patch=20by=20Mika=20Bostr=F6m.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- CHANGES | 11 +++++++++++ TODO | 2 -- configure.in.pre | 4 ++-- includes/silcincludes.h.in | 4 ++++ lib/silccrypt/silcrng.c | 32 +++++++++++++++++++++++++++++++- 5 files changed, 48 insertions(+), 5 deletions(-) diff --git a/CHANGES b/CHANGES index a4d5f0c7..d9dfd5ba 100644 --- a/CHANGES +++ b/CHANGES @@ -3,6 +3,17 @@ Sun Apr 3 14:58:53 EEST 2005 Pekka Riikonen * Added WATCH list announcing in backup router protocol. Affected files are silcd/command.c, server.c, server_backup.c. + * Do not change users mode to founder on normal server/backup + if the founder mode is set, and user is first one to join. + Affected file silcd/pcaket_receive.c. + + * Do not send CUMODE_CHANGE notify back to sender. Affected + file silcd/packet_receive.c. + + * Added getrusage() to take noise in SILC RNG. A patch by + Mika Boström. Affected files are configure.in.pre, + includes/silcincludes.h.in, lib/silccrypt/silcrng.c. + Sat Apr 2 18:09:30 EEST 2005 Pekka Riikonen * Splitted the SILC libraries configuration into a configure diff --git a/TODO b/TODO index 84213bd6..0f5cfaae 100644 --- a/TODO +++ b/TODO @@ -23,8 +23,6 @@ TODO for SILC Server 1.0 o Basic UTF-8 stringprep profile that makes sure UTF-8 strings are as defined in spec-08 section 3.13. - o Check that founder key is distributed ok during backup resuming. - o Testing diff --git a/configure.in.pre b/configure.in.pre index 64ab2145..140897d6 100644 --- a/configure.in.pre +++ b/configure.in.pre @@ -79,7 +79,7 @@ AC_HEADER_STAT # AC_CHECK_HEADERS(unistd.h string.h getopt.h errno.h fcntl.h assert.h) AC_CHECK_HEADERS(sys/types.h sys/stat.h sys/time.h stddef.h) -AC_CHECK_HEADERS(netinet/in.h netinet/tcp.h xti.h netdb.h) +AC_CHECK_HEADERS(netinet/in.h netinet/tcp.h xti.h netdb.h sys/resource.h) AC_CHECK_HEADERS(pwd.h grp.h termcap.h paths.h) AC_CHECK_HEADERS(ncurses.h signal.h ctype.h utime.h) AC_CHECK_HEADERS(arpa/inet.h sys/mman.h limits.h termios.h locale.h langinfo.h) @@ -119,7 +119,7 @@ AC_CHECK_FUNC(socket, [], ) AC_CHECK_FUNCS(gethostname gethostbyaddr getservbyname getservbyport) AC_CHECK_FUNCS(select listen bind shutdown close connect setsockopt) -AC_CHECK_FUNCS(time ctime utime gettimeofday) +AC_CHECK_FUNCS(time ctime utime gettimeofday getrusage) AC_CHECK_FUNCS(chmod fcntl stat fstat getenv putenv strerror) AC_CHECK_FUNCS(getpid getgid getsid getpgid getpgrp getuid) AC_CHECK_FUNCS(setgroups initgroups nl_langinfo) diff --git a/includes/silcincludes.h.in b/includes/silcincludes.h.in index 8b56bf4b..e52fcc02 100644 --- a/includes/silcincludes.h.in +++ b/includes/silcincludes.h.in @@ -218,6 +218,10 @@ extern "C" { #include #endif +#ifdef HAVE_SYS_RESOURCE_H +#include +#endif + #endif /* !SILC_WIN32 */ #ifndef HAVE_GETOPT_LONG diff --git a/lib/silccrypt/silcrng.c b/lib/silccrypt/silcrng.c index df3217f4..e62e58b7 100644 --- a/lib/silccrypt/silcrng.c +++ b/lib/silccrypt/silcrng.c @@ -229,6 +229,9 @@ static void silc_rng_get_soft_noise(SilcRng rng) struct tms ptime; #endif SilcUInt32 pos; +#ifdef HAVE_GETRUSAGE + struct rusage r; +#endif pos = silc_rng_get_position(rng); @@ -277,7 +280,30 @@ static void silc_rng_get_soft_noise(SilcRng rng) silc_rng_xor(rng, getpgrp(), pos++); #endif #endif - +#ifdef HAVE_GETRUSAGE + getrusage(RUSAGE_SELF, &r); + silc_rng_xor(rng, (r.ru_utime.tv_sec + r.ru_utime.tv_usec), pos++); + silc_rng_xor(rng, (r.ru_utime.tv_sec ^ r.ru_utime.tv_usec), pos++); + silc_rng_xor(rng, (r.ru_stime.tv_sec + r.ru_stime.tv_usec), pos++); + silc_rng_xor(rng, (r.ru_stime.tv_sec ^ r.ru_stime.tv_usec), pos++); + silc_rng_xor(rng, (r.ru_maxrss + r.ru_ixrss), pos++); + silc_rng_xor(rng, (r.ru_maxrss ^ r.ru_ixrss), pos++); + silc_rng_xor(rng, (r.ru_idrss + r.ru_idrss), pos++); + silc_rng_xor(rng, (r.ru_idrss ^ r.ru_idrss), pos++); + silc_rng_xor(rng, (r.ru_idrss << 16), pos++); + silc_rng_xor(rng, (r.ru_minflt + r.ru_majflt), pos++); + silc_rng_xor(rng, (r.ru_minflt ^ r.ru_majflt), pos++); + silc_rng_xor(rng, (r.ru_nswap + r.ru_oublock + r.ru_inblock), pos++); + silc_rng_xor(rng, (r.ru_nswap << 8), pos++); + silc_rng_xor(rng, (r.ru_inblock + r.ru_oublock), pos++); + silc_rng_xor(rng, (r.ru_inblock ^ r.ru_oublock), pos++); + silc_rng_xor(rng, (r.ru_msgsnd ^ r.ru_msgrcv), pos++); + silc_rng_xor(rng, (r.ru_nsignals + r.ru_msgsnd + r.ru_msgrcv), pos++); + silc_rng_xor(rng, (r.ru_nsignals << 16), pos++); + silc_rng_xor(rng, (r.ru_nvcsw + r.ru_nivcsw), pos++); + silc_rng_xor(rng, (r.ru_nvcsw ^ r.ru_nivcsw), pos++); +#endif + #ifdef SILC_RNG_DEBUG SILC_LOG_HEXDUMP(("pool"), rng->pool, sizeof(rng->pool)); #endif @@ -290,6 +316,10 @@ static void silc_rng_get_soft_noise(SilcRng rng) static void silc_rng_get_medium_noise(SilcRng rng) { + /* If getrusage is available, there is no need for shell commands */ +#ifdef HAVE_GETRUSAGE + return; +#endif silc_rng_exec_command(rng, "ps -leaww 2> /dev/null"); silc_rng_exec_command(rng, "ls -afiln ~ 2> /dev/null"); silc_rng_exec_command(rng, "ls -afiln /proc 2> /dev/null"); -- 2.43.0