From: Pekka Riikonen Date: Sun, 3 Apr 2005 20:16:27 +0000 (+0000) Subject: Added getrusage() to take noise. A patch by Mika Boström. X-Git-Tag: silc.server.0.9.19~9 X-Git-Url: http://git.silcnet.org/gitweb/?a=commitdiff_plain;h=67a56553b44f9c7d3718eb51b295bab8cd5d74a4;p=silc.git Added getrusage() to take noise. A patch by Mika Boström. --- 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");