crda: move to a dynamic-layer for python

Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
Armin Kuster
2022-05-02 07:33:36 -07:00
committed by Khem Raj
parent e347168b10
commit 7be928f107
10 changed files with 0 additions and 0 deletions

View File

@@ -0,0 +1,31 @@
From 078e962d345fd0536fe7ba797485ee1a4159c032 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 4 Feb 2022 09:18:30 -0800
Subject: [PATCH] Make alpha2 to be 3 characters long
Fixes buffer overflow
reglib.c:969:9: error: 'sscanf' may overflow; destination buffer in argument 3 has size 2, but the corresponding specifier may require size 3 [-Werror,-Wfortify-source]
alpha2,
^
Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
reglib.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/reglib.c b/reglib.c
index e00e9b8..8565a0b 100644
--- a/reglib.c
+++ b/reglib.c
@@ -958,7 +958,7 @@ reglib_parse_rules(FILE *fp, struct ieee80211_regdomain *trd)
static int reglib_parse_country_dfs(char *line, struct ieee80211_regdomain *rd)
{
char dfs_region_alpha[9];
- char alpha2[2];
+ char alpha2[3];
int hits;
memset(rd, 0, sizeof(*rd));
--
2.35.1

View File

@@ -0,0 +1,29 @@
From 1e1a78b7b4fa1662b4447aa19c15b1e839b7e9db Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20M=C3=BCller-Klieser?= <s.mueller-klieser@phytec.de>
Date: Wed, 24 Aug 2016 10:58:45 +0200
Subject: [PATCH] Makefile: respect LDFLAGS for libreg
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Stefan Müller-Klieser <s.mueller-klieser@phytec.de>
---
Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
index 2879896..1650db8 100644
--- a/Makefile
+++ b/Makefile
@@ -116,7 +116,7 @@ keys-%.c: utils/key2pub.py $(wildcard $(PUBKEY_DIR)/*.pem)
$(LIBREG): regdb.h reglib.h reglib.c
$(NQ) ' CC ' $@
- $(Q)$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ -shared -Wl,-soname,$(LIBREG) $^ $(LIBREGLDLIBS)
+ $(Q)$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ -shared -Wl,-soname,$(LIBREG) $^ $(LDFLAGS) $(LIBREGLDLIBS)
install-libreg-headers:
$(NQ) ' INSTALL libreg-headers'
--
1.9.1

View File

@@ -0,0 +1,101 @@
Imported from Gentoo
https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9c50acec16bc7c33d6dc122c007d713e7fbecf9c
Signed-off-by: Khem Raj <raj.khem@gmail.com>
--- a/utils/key2pub.py
+++ b/utils/key2pub.py
@@ -1,22 +1,22 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
import sys
try:
from M2Crypto import RSA
-except ImportError, e:
+except ImportError as e:
sys.stderr.write('ERROR: Failed to import the "M2Crypto" module: %s\n' % e.message)
sys.stderr.write('Please install the "M2Crypto" Python module.\n')
sys.stderr.write('On Debian GNU/Linux the package is called "python-m2crypto".\n')
sys.exit(1)
def print_ssl_64(output, name, val):
- while val[0] == '\0':
+ while val[0:1] == b'\0':
val = val[1:]
while len(val) % 8:
- val = '\0' + val
+ val = b'\0' + val
vnew = []
while len(val):
- vnew.append((val[0], val[1], val[2], val[3], val[4], val[5], val[6], val[7]))
+ vnew.append((val[0:1], val[1:2], val[2:3], val[3:4], val[4:5], val[5:6], val[6:7], val[7:8]))
val = val[8:]
vnew.reverse()
output.write('static BN_ULONG %s[%d] = {\n' % (name, len(vnew)))
@@ -34,13 +34,13 @@ def print_ssl_64(output, name, val):
output.write('};\n\n')
def print_ssl_32(output, name, val):
- while val[0] == '\0':
+ while val[0:1] == b'\0':
val = val[1:]
while len(val) % 4:
- val = '\0' + val
+ val = b'\0' + val
vnew = []
while len(val):
- vnew.append((val[0], val[1], val[2], val[3], ))
+ vnew.append((val[0:1], val[1:2], val[2:3], val[3:4]))
val = val[4:]
vnew.reverse()
output.write('static BN_ULONG %s[%d] = {\n' % (name, len(vnew)))
@@ -81,21 +81,21 @@ struct pubkey {
static struct pubkey keys[] __attribute__((unused))= {
''')
- for n in xrange(n + 1):
+ for n in range(n + 1):
output.write(' KEYS(e_%d, n_%d),\n' % (n, n))
output.write('};\n')
pass
def print_gcrypt(output, name, val):
output.write('#include <stdint.h>\n')
- while val[0] == '\0':
+ while val[0:1] == b'\0':
val = val[1:]
output.write('static const uint8_t %s[%d] = {\n' % (name, len(val)))
idx = 0
for v in val:
if not idx:
output.write('\t')
- output.write('0x%.2x, ' % ord(v))
+ output.write('0x%.2x, ' % (v if sys.version_info[0] >=3 else ord(v)))
idx += 1
if idx == 8:
idx = 0
@@ -118,7 +118,7 @@ struct key_params {
static const struct key_params keys[] __attribute__((unused))= {
''')
- for n in xrange(n + 1):
+ for n in range(n + 1):
output.write(' KEYS(e_%d, n_%d),\n' % (n, n))
output.write('};\n')
@@ -136,7 +136,7 @@ except IndexError:
mode = None
if not mode in modes:
- print 'Usage: %s [%s] input-file... output-file' % (sys.argv[0], '|'.join(modes.keys()))
+ print('Usage: %s [%s] input-file... output-file' % (sys.argv[0], '|'.join(modes.keys())))
sys.exit(2)
output = open(outfile, 'w')
@@ -154,3 +154,5 @@ for f in files:
idx += 1
modes[mode][1](output, idx - 1)
+
+output.close()

View File

@@ -0,0 +1,21 @@
From: Ben Hutchings <ben@decadent.org.uk>
Date: Sat, 23 Aug 2014 12:27:34 -0700
Subject: crda: Do not run ldconfig if DESTDIR is set
Upstream-Status: Backport [http://www.spinics.net/lists/linux-wireless/msg126028.html]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
--- a/Makefile
+++ b/Makefile
@@ -132,7 +132,9 @@ install-libreg:
$(NQ) ' INSTALL libreg'
$(Q)mkdir -p $(DESTDIR)/$(LIBDIR)
$(Q)cp $(LIBREG) $(DESTDIR)/$(LIBDIR)/
+ifndef DESTDIR
$(Q)ldconfig
+endif
%.o: %.c regdb.h $(LIBREG)
$(NQ) ' CC ' $@

View File

@@ -0,0 +1,11 @@
--- crda-3.18/utils/key2pub.py.orig 2016-06-18 09:54:23.671326113 -0400
+++ crda-3.18/utils/key2pub.py 2016-06-18 09:54:34.387326300 -0400
@@ -115,7 +115,7 @@
.n = _n, .len_n = sizeof(_n), \
}
-static const struct key_params keys[] = {
+static const struct key_params keys[] __attribute__((unused))= {
''')
for n in xrange(n + 1):
output.write(' KEYS(e_%d, n_%d),\n' % (n, n))

View File

@@ -0,0 +1,58 @@
From 8d2164a090f17286ea8291f30a123595cf447dc3 Mon Sep 17 00:00:00 2001
From: Haiqing Bai <Haiqing.Bai@windriver.com>
Date: Wed, 30 Nov 2016 10:27:36 +0800
Subject: [PATCH] crda: fix issues when 'USE_OPENSSL=1'.
Fxed the below issues if configured with 'USE_OPENSSL=1':
a. keys-ssl.c uses BN_ULONG but doesn't include the openssl headers leading
to build failures:
keys-ssl.c:2:8: error: unknown type name 'BN_ULONG'
static BN_ULONG e_0[1] = {
b. The large unqualified constants also break building:
keys-ssl.c:8:2: warning: overflow in implicit constant conversion [-Woverflow]
0x63a2705416a0d8e1, 0xdc9fca11c8ba757b,
c. keys-ssl.c: error: 'keys' defined but not used [-Werror=unused-variable]
static struct pubkey keys[] = {
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Upstream-Status: Pending
Signed-off-by: Haiqing Bai <Haiqing.Bai@windriver.com>
---
utils/key2pub.py | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/utils/key2pub.py b/utils/key2pub.py
index 401d58a..3ae00b8 100755
--- a/utils/key2pub.py
+++ b/utils/key2pub.py
@@ -24,7 +24,7 @@ def print_ssl_64(output, name, val):
for v1, v2, v3, v4, v5, v6, v7, v8 in vnew:
if not idx:
output.write('\t')
- output.write('0x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x, ' % (ord(v1), ord(v2), ord(v3), ord(v4), ord(v5), ord(v6), ord(v7), ord(v8)))
+ output.write('0x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2xULL, ' % (ord(v1), ord(v2), ord(v3), ord(v4), ord(v5), ord(v6), ord(v7), ord(v8)))
idx += 1
if idx == 2:
idx = 0
@@ -60,6 +60,7 @@ def print_ssl_32(output, name, val):
def print_ssl(output, name, val):
import os
output.write('#include <stdint.h>\n')
+ output.write('#include <openssl/bn.h>\n')
if os.getenv('TARGET_BITS') == '64':
return print_ssl_64(output, name, val)
else:
@@ -78,7 +79,7 @@ struct pubkey {
#define KEYS(e,n) { KEY(e), KEY(n), }
-static struct pubkey keys[] = {
+static struct pubkey keys[] __attribute__((unused))= {
''')
for n in xrange(n + 1):
output.write(' KEYS(e_%d, n_%d),\n' % (n, n))
--
1.9.1

View File

@@ -0,0 +1,57 @@
From 890f5bf2654b695a866262d72bfa9750af921a3b Mon Sep 17 00:00:00 2001
From: Ben Hutchings <ben@decadent.org.uk>
Date: Sat, 23 Aug 2014 12:26:37 -0700
Subject: [PATCH] Fix linking of libraries used by libreg
The math and crypto libraries are called by and need to be linked to
libreg.so, not to the executables.
Upstream-Status: Backport [http://www.spinics.net/lists/linux-wireless/msg126027.html]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
---
Makefile | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/Makefile b/Makefile
index a3ead30..da2dcc3 100644
--- a/Makefile
+++ b/Makefile
@@ -30,7 +30,7 @@ CFLAGS += -std=gnu99 -Wall -Werror -pedantic
CFLAGS += -Wall -g
LDLIBREG += -lreg
LDLIBS += $(LDLIBREG)
-LDLIBS += -lm
+LIBREGLDLIBS += -lm
LIBREG += libreg.so
LDFLAGS += -L ./
@@ -40,13 +40,13 @@ all_noverify: $(LIBREG) crda intersect regdbdump db2rd optimize
ifeq ($(USE_OPENSSL),1)
CFLAGS += -DUSE_OPENSSL -DPUBKEY_DIR=\"$(RUNTIME_PUBKEY_DIR)\" `pkg-config --cflags openssl`
-LDLIBS += `pkg-config --libs openssl`
+LIBREGLDLIBS += `pkg-config --libs openssl`
$(LIBREG): keys-ssl.c
else
CFLAGS += -DUSE_GCRYPT
-LDLIBS += -lgcrypt
+LIBREGLDLIBS += -lgcrypt
$(LIBREG): keys-gcrypt.c
@@ -116,7 +116,7 @@ keys-%.c: utils/key2pub.py $(wildcard $(PUBKEY_DIR)/*.pem)
$(LIBREG): regdb.h reglib.h reglib.c
$(NQ) ' CC ' $@
- $(Q)$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ -shared -Wl,-soname,$(LIBREG) $^
+ $(Q)$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ -shared -Wl,-soname,$(LIBREG) $^ $(LIBREGLDLIBS)
install-libreg-headers:
$(NQ) ' INSTALL libreg-headers'
--
2.7.4

View File

@@ -0,0 +1,25 @@
These headers are not related to any Make rule but they do appear in
compiling of libreg.so, specifying .h files in compiler cmdline is flagged
as error by clang
| clang-4.0: error: cannot specify -o when generating multiple output files
| make: *** [libreg.so] Error 1
This is how we see headers in cmdline
-O2 -fpic -std=gnu
99 -Wall -Werror -pedantic -Wall -g -DUSE_GCRYPT -DCONFIG_LIBNL30 `pkg-config --cflags libnl-3.0` -o libreg.so -shared -Wl,-soname,libreg.so
regdb.h reglib.h reglib.c keys-gcrypt.c -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -L ./ -lm -lgcrypt
Signed-off-by: Khem Raj <raj.khem@gmail.com>
--- a/Makefile.kk 2016-11-15 04:54:53.338670000 +0000
+++ a/Makefile 2016-11-15 04:55:07.718670000 +0000
@@ -114,7 +114,7 @@ keys-%.c: utils/key2pub.py $(wildcard $(
$(NQ) ' Trusted pubkeys:' $(wildcard $(PUBKEY_DIR)/*.pem)
$(Q)./utils/key2pub.py --$* $(wildcard $(PUBKEY_DIR)/*.pem) $@
-$(LIBREG): regdb.h reglib.h reglib.c
+$(LIBREG): reglib.c
$(NQ) ' CC ' $@
$(Q)$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ -shared -Wl,-soname,$(LIBREG) $^ $(LDFLAGS) $(LIBREGLDLIBS)

View File

@@ -0,0 +1,34 @@
From c1c42513edd27c97341f2033af77c13a4724eb8f Mon Sep 17 00:00:00 2001
From: Haiqing Bai <Haiqing.Bai@windriver.com>
Date: Fri, 25 Nov 2016 16:48:01 +0800
Subject: [PATCH] crda: Use target word size instead of host's.
In key2pub.py, the codes check the wordsize
of the host machine but not the target's, this fix
fetches the wordsize of target from the build system.
Upstream-Status: Pending
Signed-off-by: Haiqing Bai <Haiqing.Bai@windriver.com>
---
utils/key2pub.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/utils/key2pub.py b/utils/key2pub.py
index 3e84cd2..401d58a 100755
--- a/utils/key2pub.py
+++ b/utils/key2pub.py
@@ -58,9 +58,9 @@ def print_ssl_32(output, name, val):
output.write('};\n\n')
def print_ssl(output, name, val):
- import struct
+ import os
output.write('#include <stdint.h>\n')
- if len(struct.pack('@L', 0)) == 8:
+ if os.getenv('TARGET_BITS') == '64':
return print_ssl_64(output, name, val)
else:
return print_ssl_32(output, name, val)
--
1.9.1

View File

@@ -0,0 +1,39 @@
SUMMARY = "Wireless Central Regulatory Domain Agent"
HOMEPAGE = "http://wireless.kernel.org/en/developers/Regulatory/CRDA"
SECTION = "net"
LICENSE = "copyleft-next-0.3.0"
LIC_FILES_CHKSUM = "file://copyleft-next-0.3.0;md5=8743a2c359037d4d329a31e79eabeffe"
DEPENDS = "python3-m2crypto-native libnl libgcrypt"
SRC_URI = "https://www.kernel.org/pub/software/network/${BPN}/${BP}.tar.xz \
file://do-not-run-ldconfig-if-destdir-is-set.patch \
file://fix-linking-of-libraries-used-by-reglib.patch \
file://fix-gcc-6-unused-variables.patch \
file://0001-Makefile-respect-LDFLAGS-for-libreg.patch \
file://make.patch \
file://use-target-word-size-instead-of-host-s.patch \
file://fix-issues-when-USE_OPENSSL-1.patch \
file://crda-4.14-python-3.patch \
file://0001-Make-alpha2-to-be-3-characters-long.patch \
"
SRC_URI[md5sum] = "0431fef3067bf503dfb464069f06163a"
SRC_URI[sha256sum] = "43fcb9679f8b75ed87ad10944a506292def13e4afb194afa7aa921b01e8ecdbf"
inherit pkgconfig python3-dir python3native siteinfo
# Recursive make problem
EXTRA_OEMAKE = "MAKEFLAGS= DESTDIR=${D} LIBDIR=${libdir}/crda LDLIBREG='-Wl,-rpath,${libdir}/crda -lreg' \
UDEV_RULE_DIR=${nonarch_base_libdir}/udev/rules.d/"
TARGET_BITS = "${SITEINFO_BITS}"
export TARGET_BITS
do_compile() {
oe_runmake all_noverify
}
do_install() {
oe_runmake SBINDIR=${sbindir}/ install
}
RDEPENDS:${PN} = "udev wireless-regdb-static"