This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx-apps.git


The following commit(s) were added to refs/heads/master by this push:
     new 4b0a3d92f Porting NIST-Statistical-Test-Suite in nuttx to test quality 
of rng
4b0a3d92f is described below

commit 4b0a3d92ff01ab0dd1765dcdacaf35a99d210d0d
Author: makejian <[email protected]>
AuthorDate: Thu Apr 20 20:34:47 2023 +0800

    Porting NIST-Statistical-Test-Suite in nuttx to test quality of rng
    
    (1)add nist-sts init nuttx
    (2)Fix possible memory bug
    (3)Fix double free memory
    Signed-off-by: makejian <[email protected]>
---
 .gitignore                                         |  1 +
 ...e-the-memory-out-of-bounds-problem-in-sts.patch | 27 ++++++++++
 ...t-crash-in-running-a-single-test-after-ru.patch | 37 +++++++++++++
 testing/nist-sts/Kconfig                           | 30 +++++++++++
 testing/nist-sts/Make.defs                         | 23 ++++++++
 testing/nist-sts/Makefile                          | 63 ++++++++++++++++++++++
 6 files changed, 181 insertions(+)

diff --git a/.gitignore b/.gitignore
index 794f52e36..93d90cc3d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -37,3 +37,4 @@ Make.dep
 .dirlinks
 .vscode
 .DS_Store
+testing/nist-sts/*
diff --git 
a/testing/nist-sts/0001-Solve-the-memory-out-of-bounds-problem-in-sts.patch 
b/testing/nist-sts/0001-Solve-the-memory-out-of-bounds-problem-in-sts.patch
new file mode 100644
index 000000000..89e113d03
--- /dev/null
+++ b/testing/nist-sts/0001-Solve-the-memory-out-of-bounds-problem-in-sts.patch
@@ -0,0 +1,27 @@
+From 530b8e0d0f9ea68f1dd977caddc76fbe4a2c66b8 Mon Sep 17 00:00:00 2001
+From: makejian <[email protected]>
+Date: Wed, 19 Apr 2023 22:57:44 +0800
+Subject: [PATCH 1/2] Solve the memory out of bounds problem in sts
+
+Signed-off-by: makejian <[email protected]>
+Change-Id: I28a132a793603205e25e5925de3e51ff2c44873b
+---
+ sts/src/discreteFourierTransform.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git nist-sts/sts/src/discreteFourierTransform.c 
nist-sts/sts/src/discreteFourierTransform.c
+index 61b52c2..96b4bb7 100644
+--- nist-sts/sts/src/discreteFourierTransform.c
++++ nist-sts/sts/src/discreteFourierTransform.c
+@@ -38,7 +38,7 @@ DiscreteFourierTransform(int n)
+       
+       m[0] = sqrt(X[0]*X[0]);     /* COMPUTE MAGNITUDE */
+       
+-      for ( i=0; i<n/2; i++ )
++      for ( i=0; i<n/2-1; i++ )
+               m[i+1] = sqrt(pow(X[2*i+1],2)+pow(X[2*i+2],2)); 
+       count = 0;                                     /* CONFIDENCE INTERVAL */
+       upperBound = sqrt(2.995732274*n);
+-- 
+2.40.0
+
diff --git 
a/testing/nist-sts/0002-Fix-bug-that-crash-in-running-a-single-test-after-ru.patch
 
b/testing/nist-sts/0002-Fix-bug-that-crash-in-running-a-single-test-after-ru.patch
new file mode 100644
index 000000000..5670f7023
--- /dev/null
+++ 
b/testing/nist-sts/0002-Fix-bug-that-crash-in-running-a-single-test-after-ru.patch
@@ -0,0 +1,37 @@
+From a5e672bb9b4f672d3541d76aac40206cf0fdb714 Mon Sep 17 00:00:00 2001
+From: makejian <[email protected]>
+Date: Tue, 16 May 2023 21:23:20 +0800
+Subject: [PATCH 2/2] Fix bug that crash in running a single test after running 
all
+ tests
+
+double free same memory
+Signed-off-by: makejian <[email protected]>
+Change-Id: Ie56dabd6d6eae93c0b066ced6148ea362f1c6085
+---
+ sts/src/assess.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git nist-sts/sts/src/assess.c nist-sts/sts/src/assess.c
+index cf41d4f..3aa5800 100644
+--- nist-sts/sts/src/assess.c
++++ nist-sts/sts/src/assess.c
+@@ -84,10 +84,14 @@ main(int argc, char *argv[])
+       invokeTestSuite(option, streamFile);
+       fclose(freqfp);
+       for( i=1; i<=NUMOFTESTS; i++ ) {
+-              if ( stats[i] != NULL )
++              if ( stats[i] != NULL ) {
+                       fclose(stats[i]);
+-              if ( results[i] != NULL )
++                      stats[i] = NULL;
++              }
++              if ( results[i] != NULL ) {
+                       fclose(results[i]);
++                      results[i] = NULL;
++              }
+       }
+       if ( (testVector[0] == 1) || (testVector[TEST_CUSUM] == 1) )
+               partitionResultFile(2, tp.numOfBitStreams, option, TEST_CUSUM);
+--
+2.40.0
+
diff --git a/testing/nist-sts/Kconfig b/testing/nist-sts/Kconfig
new file mode 100644
index 000000000..1d28cbddf
--- /dev/null
+++ b/testing/nist-sts/Kconfig
@@ -0,0 +1,30 @@
+#
+# For a description of the syntax of this configuration file,
+# see the file kconfig-language.txt in the NuttX tools repository.
+#
+
+config TESTING_NIST_STS
+       tristate "NIST Statistical Test Suite"
+       default n
+       ---help---
+               
https://csrc.nist.gov/projects/random-bit-generation/documentation-and-software
+
+if TESTING_NIST_STS
+
+config TESTING_NIST_STS_PROGNAME
+       string "Program name"
+       default "nist_sts"
+
+config TESTING_NIST_STS_PRIORITY
+       int "nist_sts task priority"
+       default 100
+
+config TESTING_NIST_STS_STACKSIZE
+       int "nist_sts stack size"
+       default 8192
+
+config TESTING_NIST_STS_VERSION
+       string "nist_sts version"
+       default "2_1_2"
+
+endif
diff --git a/testing/nist-sts/Make.defs b/testing/nist-sts/Make.defs
new file mode 100644
index 000000000..ba3894344
--- /dev/null
+++ b/testing/nist-sts/Make.defs
@@ -0,0 +1,23 @@
+############################################################################
+# apps/testing/nist-sts/Make.defs
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.  The
+# ASF licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the
+# License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+############################################################################
+
+ifneq ($(CONFIG_TESTING_NIST_STS),)
+CONFIGURED_APPS += $(APPDIR)/testing/nist-sts
+endif
diff --git a/testing/nist-sts/Makefile b/testing/nist-sts/Makefile
new file mode 100644
index 000000000..d4dd405a1
--- /dev/null
+++ b/testing/nist-sts/Makefile
@@ -0,0 +1,63 @@
+############################################################################
+# apps/testing/nist-sts/Make.defs
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.  The
+# ASF licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the
+# License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+############################################################################
+
+include $(APPDIR)/Make.defs
+
+PROGNAME  = $(CONFIG_TESTING_NIST_STS_PROGNAME)
+PRIORITY  = $(CONFIG_TESTING_NIST_STS_PRIORITY)
+STACKSIZE = $(CONFIG_TESTING_NIST_STS_STACKSIZE)
+MODULE    = $(CONFIG_TESTING_NIST_STS)
+
+NIST_URL ?= 
"https://csrc.nist.gov/CSRC/media/Projects/Random-Bit-Generation/documents/";
+
+NIST_UNPACKNAME = nist-sts
+NIST_PACKNAME   = sts-2.1.2
+NIST_ZIP        = sts-2_1_2.zip
+UNPACK         ?= unzip -q -o
+
+$(NIST_ZIP):
+       @echo "Downloading: $(NIST_ZIP)"
+       $(Q) $(call DOWNLOAD,$(NIST_URL),$(NIST_ZIP))
+
+$(NIST_UNPACKNAME): $(NIST_ZIP)
+       @echo "Unpacking: $(NIST_ZIP) -> $(NIST_UNPACKNAME)"
+       $(Q) $(UNPACK) $(NIST_ZIP)
+       $(Q) mv $(NIST_PACKNAME) $(NIST_UNPACKNAME)
+       $(Q) mv $(NIST_UNPACKNAME)/$(NIST_PACKNAME) $(NIST_UNPACKNAME)/sts
+       $(Q) echo "Patching $(NIST_UNPACKNAME)"
+       $(Q) patch -p1 -d $(NIST_UNPACKNAME) < 
0001-Solve-the-memory-out-of-bounds-problem-in-sts.patch
+       $(Q) patch -p1 -d $(NIST_UNPACKNAME) < 
0002-Fix-bug-that-crash-in-running-a-single-test-after-ru.patch
+       $(Q) touch $(NIST_UNPACKNAME)
+
+MAINSRC   = nist-sts/sts/src/assess.c
+CSRCS     = $(shell find nist-sts/sts/src -name "*.c" ! -name "assess.c")
+CFLAGS   += -Wno-misleading-indentation -Wno-unused-but-set-variable \
+            -Wno-strict-prototypes -Wno-undef -Wno-shadow -Wno-unused-variable
+
+# Download and unpack tarball if no git repo found
+ifeq ($(wildcard $(NIST_UNPACKNAME)/.git),)
+context:: $(NIST_UNPACKNAME)
+
+distclean::
+       $(call DELDIR, $(NIST_UNPACKNAME))
+       $(call DELFILE, $(NIST_ZIP))
+endif
+
+include $(APPDIR)/Application.mk

Reply via email to