From mboxrd@z Thu Jan 1 00:00:00 1970 From: Declan Doherty Subject: Re: [PATCH v1 1/1] examples/l2fwd-crypto: improve random key generator Date: Wed, 13 Jul 2016 16:55:43 +0100 Message-ID: <592ce77e-576f-d17d-d0b6-c9caed081c3c@intel.com> References: <1464183292-24280-1-git-send-email-piotrx.t.azarewicz@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit To: Piotr Azarewicz , dev@dpdk.org Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id 3B422376D for ; Wed, 13 Jul 2016 18:00:24 +0200 (CEST) In-Reply-To: <1464183292-24280-1-git-send-email-piotrx.t.azarewicz@intel.com> List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On 05/25/2016 02:34 PM, Piotr Azarewicz wrote: > This patch improve generate_random_key() function by replacing rand() > function with reading from /dev/urandom. > > CID 120136 : Calling risky function (DC.WEAK_CRYPTO) > dont_call: rand should not be used for security related applications, as > linear congruential algorithms are too easy to break > > Coverity issue: 120136 > > Signed-off-by: Piotr Azarewicz > --- > examples/l2fwd-crypto/main.c | 18 +++++++++++++----- > 1 file changed, 13 insertions(+), 5 deletions(-) > > diff --git a/examples/l2fwd-crypto/main.c b/examples/l2fwd-crypto/main.c > index d18c813..e1f0a1e 100644 > --- a/examples/l2fwd-crypto/main.c > +++ b/examples/l2fwd-crypto/main.c > @@ -45,6 +45,8 @@ > #include > #include > #include > +#include > +#include > > #include > #include > @@ -581,10 +583,18 @@ l2fwd_simple_forward(struct rte_mbuf *m, unsigned portid) > static void > generate_random_key(uint8_t *key, unsigned length) > { > - unsigned i; > + int fd; > + int ret; > + > + fd = open("/dev/urandom", O_RDONLY); > + if (fd < 0) > + rte_exit(EXIT_FAILURE, "Failed to generate random key\n"); > > - for (i = 0; i < length; i++) > - key[i] = rand() % 0xff; > + ret = read(fd, key, length); > + close(fd); > + > + if (ret != (signed)length) > + rte_exit(EXIT_FAILURE, "Failed to generate random key\n"); > } > > static struct rte_cryptodev_sym_session * > @@ -1180,8 +1190,6 @@ l2fwd_crypto_parse_timer_period(struct l2fwd_crypto_options *options, > static void > l2fwd_crypto_default_options(struct l2fwd_crypto_options *options) > { > - srand(time(NULL)); > - > options->portmask = 0xffffffff; > options->nb_ports_per_lcore = 1; > options->refresh_period = 10000; > Acked-by: Declan Doherty