From 89fc6e54f0cc3655244a755b33563e9cd28612dc Mon Sep 17 00:00:00 2001 From: bodea Date: Tue, 14 Jun 2005 03:36:16 +0000 Subject: [PATCH] Always initialise PRNG. Sanity check length of random_vector. --- Changes | 4 +++- l2tpns.c | 23 +++++++++++++---------- l2tpns.spec | 2 +- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/Changes b/Changes index e1b5edf..9c790f7 100644 --- a/Changes +++ b/Changes @@ -1,4 +1,4 @@ -* Sun Jun 12 2005 Brendan O'Dea 2.1.1 +* Tue Jun 14 2005 Brendan O'Dea 2.1.1 - Add missing newline to backtrace macro. - Don't send CDN for each session when shutting down tunnels (this is implicit). @@ -6,6 +6,8 @@ still_busy(). Reject new tunnels/sessions while in the process of shutting down. - Clarify usage of shutdown signals in documentation. +- Always initialise PRNG. +- Sanity check length of random_vector. * Sun Jun 5 2005 Brendan O'Dea 2.1.0 - Add IPv6 support from Jonathan McDowell. diff --git a/l2tpns.c b/l2tpns.c index 22187e1..bd255a3 100644 --- a/l2tpns.c +++ b/l2tpns.c @@ -4,7 +4,7 @@ // Copyright (c) 2002 FireBrick (Andrews & Arnold Ltd / Watchfront Ltd) - GPL licenced // vim: sw=8 ts=8 -char const *cvs_id_l2tpns = "$Id: l2tpns.c,v 1.109 2005/06/12 06:10:29 bodea Exp $"; +char const *cvs_id_l2tpns = "$Id: l2tpns.c,v 1.110 2005/06/14 03:36:23 bodea Exp $"; #include #include @@ -326,7 +326,8 @@ static void initrandom(char *source) return; // close previous source, if any - if (rand_fd >= 0) close(rand_fd); + if (rand_fd >= 0) + close(rand_fd); rand_fd = -1; @@ -343,13 +344,6 @@ static void initrandom(char *source) path, strerror(errno)); } } - - // no source: seed prng - { - unsigned seed = time_now ^ getpid(); - LOG(4, 0, 0, "Seeding the pseudo random generator: %u\n", seed); - srand(seed); - } } // fill buffer with random data @@ -370,7 +364,7 @@ void random_data(uint8_t *buf, int len) strerror(errno)); // fall back to rand() - initrandom(0); + initrandom(NULL); } n = 0; @@ -2274,6 +2268,8 @@ void processudp(uint8_t * buf, int len, struct sockaddr_in *addr) case 36: // Random Vector LOG(4, s, t, " Random Vector received. Enabled AVP Hiding.\n"); memset(session[s].random_vector, 0, sizeof(session[s].random_vector)); + if (n > sizeof(session[s].random_vector)) + n = sizeof(session[s].random_vector); memcpy(session[s].random_vector, b, n); session[s].random_vector_length = n; break; @@ -3929,6 +3925,13 @@ int main(int argc, char *argv[]) initrad(); initippool(); + // seed prng + { + unsigned seed = time_now ^ getpid(); + LOG(4, 0, 0, "Seeding the pseudo random generator: %u\n", seed); + srand(seed); + } + signal(SIGHUP, sighup_handler); signal(SIGCHLD, sigchild_handler); signal(SIGTERM, shutdown_handler); diff --git a/l2tpns.spec b/l2tpns.spec index 032f899..9902367 100644 --- a/l2tpns.spec +++ b/l2tpns.spec @@ -43,5 +43,5 @@ rm -rf %{buildroot} %attr(644,root,root) /usr/share/man/man[58]/* %changelog -* Sun Jun 12 2005 Brendan O'Dea 2.1.1-1 +* Tue Jun 14 2005 Brendan O'Dea 2.1.1-1 - 2.1.1 release, see /usr/share/doc/l2tpns-2.1.1/Changes -- 2.20.1