Complete Yocto mirror with license table for TQMa6UL (2038-compliance)
- 264 license table entries with exact download URLs (224/264 resolved) - Complete sources/ directory with all BitBake recipes - Build configuration: tqma6ul-multi-mba6ulx, spaetzle (musl) - Full traceability for Softwarefreigabeantrag - GCC 13.4.0, Linux 6.6.102, U-Boot 2023.04, musl 1.2.4 - License distribution: GPL-2.0 (24), MIT (23), GPL-2.0+ (18), BSD-3 (16)
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
Description: Add missing headers
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
|
||||
|
||||
--- a/netstat.c
|
||||
+++ b/netstat.c
|
||||
@@ -88,6 +88,7 @@
|
||||
#include <sys/stat.h>
|
||||
#include <net/if.h>
|
||||
#include <dirent.h>
|
||||
+#include <sys/types.h>
|
||||
|
||||
#include "net-support.h"
|
||||
#include "pathnames.h"
|
||||
@@ -0,0 +1,91 @@
|
||||
From 7a8f42fb20013a1493d8cae1c43436f85e656f2d Mon Sep 17 00:00:00 2001
|
||||
From: Zephkeks <zephyrofficialdiscord@gmail.com>
|
||||
Date: Tue, 13 May 2025 11:04:17 +0200
|
||||
Subject: [PATCH] CVE-2025-46836: interface.c: Stack-based Buffer Overflow in
|
||||
get_name()
|
||||
|
||||
Coordinated as GHSA-pfwf-h6m3-63wf
|
||||
|
||||
CVE: CVE-2025-46836
|
||||
Upstream-Status: Backport [https://sourceforge.net/p/net-tools/code/ci/7a8f42fb20013a1493d8cae1c43436f85e656f2d/]
|
||||
Signed-off-by: Peter Marko <peter.marko@siemens.com>
|
||||
---
|
||||
lib/interface.c | 63 ++++++++++++++++++++++++++++++-------------------
|
||||
1 file changed, 39 insertions(+), 24 deletions(-)
|
||||
|
||||
diff --git a/lib/interface.c b/lib/interface.c
|
||||
index 71d4163..a054f12 100644
|
||||
--- a/lib/interface.c
|
||||
+++ b/lib/interface.c
|
||||
@@ -211,32 +211,47 @@ out:
|
||||
}
|
||||
|
||||
static const char *get_name(char *name, const char *p)
|
||||
+/* Safe version — guarantees at most IFNAMSIZ‑1 bytes are copied
|
||||
+ and the destination buffer is always NUL‑terminated. */
|
||||
{
|
||||
- while (isspace(*p))
|
||||
- p++;
|
||||
- while (*p) {
|
||||
- if (isspace(*p))
|
||||
- break;
|
||||
- if (*p == ':') { /* could be an alias */
|
||||
- const char *dot = p++;
|
||||
- while (*p && isdigit(*p)) p++;
|
||||
- if (*p == ':') {
|
||||
- /* Yes it is, backup and copy it. */
|
||||
- p = dot;
|
||||
- *name++ = *p++;
|
||||
- while (*p && isdigit(*p)) {
|
||||
- *name++ = *p++;
|
||||
- }
|
||||
- } else {
|
||||
- /* No, it isn't */
|
||||
- p = dot;
|
||||
- }
|
||||
- p++;
|
||||
- break;
|
||||
- }
|
||||
- *name++ = *p++;
|
||||
+ char *dst = name; /* current write ptr */
|
||||
+ const char *end = name + IFNAMSIZ - 1; /* last byte we may write */
|
||||
+
|
||||
+ /* Skip leading white‑space. */
|
||||
+ while (isspace((unsigned char)*p))
|
||||
+ ++p;
|
||||
+
|
||||
+ /* Copy until white‑space, end of string, or buffer full. */
|
||||
+ while (*p && !isspace((unsigned char)*p) && dst < end) {
|
||||
+ if (*p == ':') { /* possible alias veth0:123: */
|
||||
+ const char *dot = p; /* remember the colon */
|
||||
+ ++p;
|
||||
+ while (*p && isdigit((unsigned char)*p))
|
||||
+ ++p;
|
||||
+
|
||||
+ if (*p == ':') { /* confirmed alias */
|
||||
+ p = dot; /* rewind and copy it all */
|
||||
+
|
||||
+ /* copy the colon */
|
||||
+ if (dst < end)
|
||||
+ *dst++ = *p++;
|
||||
+
|
||||
+ /* copy the digits */
|
||||
+ while (*p && isdigit((unsigned char)*p) && dst < end)
|
||||
+ *dst++ = *p++;
|
||||
+
|
||||
+ if (*p == ':') /* consume trailing colon */
|
||||
+ ++p;
|
||||
+ } else { /* if so treat as normal */
|
||||
+ p = dot;
|
||||
+ }
|
||||
+ break; /* interface name ends here */
|
||||
+ }
|
||||
+
|
||||
+ *dst++ = *p++; /* ordinary character copy */
|
||||
}
|
||||
- *name++ = '\0';
|
||||
+
|
||||
+ *dst = '\0'; /* always NUL‑terminate */
|
||||
return p;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
From ddb0e375fb9ca95bb69335540b85bbdaa2714348 Mon Sep 17 00:00:00 2001
|
||||
From: Bernd Eckenfels <net-tools@lina.inka.de>
|
||||
Date: Sat, 17 May 2025 21:53:23 +0200
|
||||
Subject: [PATCH] Interface statistic regression after 7a8f42fb2
|
||||
|
||||
CVE: CVE-2025-46836
|
||||
Upstream-Status: Backport [https://sourceforge.net/p/net-tools/code/ci/ddb0e375fb9ca95bb69335540b85bbdaa2714348/]
|
||||
Signed-off-by: Peter Marko <peter.marko@siemens.com>
|
||||
---
|
||||
lib/interface.c | 5 ++---
|
||||
1 file changed, 2 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/lib/interface.c b/lib/interface.c
|
||||
index a054f12..ca4adf1 100644
|
||||
--- a/lib/interface.c
|
||||
+++ b/lib/interface.c
|
||||
@@ -239,12 +239,11 @@ static const char *get_name(char *name, const char *p)
|
||||
/* copy the digits */
|
||||
while (*p && isdigit((unsigned char)*p) && dst < end)
|
||||
*dst++ = *p++;
|
||||
-
|
||||
- if (*p == ':') /* consume trailing colon */
|
||||
- ++p;
|
||||
} else { /* if so treat as normal */
|
||||
p = dot;
|
||||
}
|
||||
+ if (*p == ':') /* consume trailing colon */
|
||||
+ ++p;
|
||||
break; /* interface name ends here */
|
||||
}
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
/*
|
||||
* config.h Automatically generated configuration includefile
|
||||
*
|
||||
* NET-TOOLS A collection of programs that form the base set of the
|
||||
* NET-3 Networking Distribution for the LINUX operating
|
||||
* system.
|
||||
*
|
||||
* DO NOT EDIT DIRECTLY
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
*
|
||||
* Internationalization
|
||||
*
|
||||
* The net-tools package has currently been translated to French,
|
||||
* German and Brazilian Portugese. Other translations are, of
|
||||
* course, welcome. Answer `n' here if you have no support for
|
||||
* internationalization on your system.
|
||||
*
|
||||
*/
|
||||
#define I18N 1
|
||||
|
||||
/*
|
||||
*
|
||||
* Protocol Families.
|
||||
*
|
||||
*/
|
||||
#define HAVE_AFUNIX 1
|
||||
#define HAVE_AFINET 1
|
||||
#define HAVE_AFINET6 1
|
||||
#define HAVE_AFIPX 0
|
||||
#define HAVE_AFATALK 0
|
||||
#define HAVE_AFAX25 0
|
||||
#define HAVE_AFNETROM 1
|
||||
#define HAVE_AFROSE 0
|
||||
#define HAVE_AFX25 0
|
||||
#define HAVE_AFECONET 0
|
||||
#define HAVE_AFDECnet 0
|
||||
#define HAVE_AFASH 0
|
||||
|
||||
/*
|
||||
*
|
||||
* Device Hardware types.
|
||||
*
|
||||
*/
|
||||
#define HAVE_HWETHER 1
|
||||
#define HAVE_HWARC 1
|
||||
#define HAVE_HWSLIP 1
|
||||
#define HAVE_HWPPP 1
|
||||
#define HAVE_HWTUNNEL 1
|
||||
#define HAVE_HWSTRIP 0
|
||||
#define HAVE_HWTR 0
|
||||
#define HAVE_HWAX25 0
|
||||
#define HAVE_HWROSE 0
|
||||
#define HAVE_HWNETROM 1
|
||||
#define HAVE_HWX25 0
|
||||
#define HAVE_HWFR 1
|
||||
#define HAVE_HWSIT 0
|
||||
#define HAVE_HWFDDI 0
|
||||
#define HAVE_HWHIPPI 0
|
||||
#define HAVE_HWASH 0
|
||||
#define HAVE_HWHDLCLAPB 0
|
||||
#define HAVE_HWIRDA 1
|
||||
#define HAVE_HWEC 0
|
||||
#define HAVE_HWIB 0
|
||||
|
||||
/*
|
||||
*
|
||||
* Other Features.
|
||||
*
|
||||
*/
|
||||
#define HAVE_FW_MASQUERADE 1
|
||||
#define HAVE_IP_TOOLS 1
|
||||
#define HAVE_MII 1
|
||||
@@ -0,0 +1,36 @@
|
||||
I18N=1
|
||||
HAVE_AFUNIX=1
|
||||
HAVE_AFINET=1
|
||||
HAVE_AFINET6=1
|
||||
# HAVE_AFIPX=0
|
||||
# HAVE_AFATALK=0
|
||||
# HAVE_AFAX25=0
|
||||
HAVE_AFNETROM=1
|
||||
# HAVE_AFROSE=0
|
||||
# HAVE_AFX25=0
|
||||
# HAVE_AFECONET=0
|
||||
# HAVE_AFDECnet=0
|
||||
# HAVE_AFASH=0
|
||||
HAVE_HWETHER=1
|
||||
HAVE_HWARC=1
|
||||
HAVE_HWSLIP=1
|
||||
HAVE_HWPPP=1
|
||||
HAVE_HWTUNNEL=1
|
||||
HAVE_HWSTRIP=1
|
||||
HAVE_HWTR=1
|
||||
# HAVE_HWAX25=0
|
||||
# HAVE_HWROSE=0
|
||||
HAVE_HWNETROM=1
|
||||
# HAVE_HWX25=0
|
||||
HAVE_HWFR=1
|
||||
# HAVE_HWSIT=0
|
||||
# HAVE_HWFDDI=0
|
||||
# HAVE_HWHIPPI=0
|
||||
# HAVE_HWASH=0
|
||||
# HAVE_HWHDLCLAPB=0
|
||||
HAVE_HWIRDA=1
|
||||
# HAVE_HWEC=0
|
||||
# HAVE_HWIB=0
|
||||
HAVE_FW_MASQUERADE=1
|
||||
HAVE_IP_TOOLS=1
|
||||
HAVE_MII=1
|
||||
123
sources/poky/meta/recipes-extended/net-tools/net-tools_2.10.bb
Normal file
123
sources/poky/meta/recipes-extended/net-tools/net-tools_2.10.bb
Normal file
@@ -0,0 +1,123 @@
|
||||
SUMMARY = "Basic networking tools"
|
||||
DESCRIPTION = "A collection of programs that form the base set of the NET-3 networking distribution for the Linux operating system"
|
||||
HOMEPAGE = "http://net-tools.berlios.de/"
|
||||
BUGTRACKER = "http://bugs.debian.org/net-tools"
|
||||
LICENSE = "GPL-2.0-or-later"
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
|
||||
file://ifconfig.c;beginline=11;endline=15;md5=d1ca372080ad5401e23ca0afc35cf9ba"
|
||||
|
||||
SRCREV = "80d7b95067f1f22fece9537dea6dff53081f4886"
|
||||
SRC_URI = "git://git.code.sf.net/p/net-tools/code;protocol=https;branch=master \
|
||||
file://net-tools-config.h \
|
||||
file://net-tools-config.make \
|
||||
file://Add_missing_headers.patch \
|
||||
file://CVE-2025-46836-01.patch \
|
||||
file://CVE-2025-46836-02.patch \
|
||||
"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
inherit gettext
|
||||
|
||||
# The Makefile is lame, no parallel build
|
||||
PARALLEL_MAKE = ""
|
||||
|
||||
PACKAGECONFIG ??= "hostname arp serial plip"
|
||||
PACKAGECONFIG[hostname] = ""
|
||||
PACKAGECONFIG[arp] = ""
|
||||
PACKAGECONFIG[serial] = ""
|
||||
PACKAGECONFIG[plip] = ""
|
||||
PACKAGECONFIG[slattach] = ""
|
||||
PACKAGECONFIG[plipconfig] = ""
|
||||
|
||||
do_configure() {
|
||||
# net-tools has its own config mechanism requiring "make config"
|
||||
# we pre-generate desired options and copy to source directory instead
|
||||
cp ${WORKDIR}/net-tools-config.h ${S}/config.h
|
||||
cp ${WORKDIR}/net-tools-config.make ${S}/config.make
|
||||
|
||||
if [ "${USE_NLS}" = "no" ]; then
|
||||
sed -i -e 's/^I18N=1/# I18N=1/' ${S}/config.make
|
||||
fi
|
||||
|
||||
if ${@bb.utils.contains('PACKAGECONFIG', 'hostname', 'true', 'false', d)} ; then
|
||||
echo "#define HAVE_HOSTNAME_TOOLS 1" >> ${S}/config.h
|
||||
echo "#define HAVE_HOSTNAME_SYMLINKS 1" >> ${S}/config.h
|
||||
echo "HAVE_HOSTNAME_TOOLS=1" >> ${S}/config.make
|
||||
echo "HAVE_HOSTNAME_SYMLINKS=1" >> ${S}/config.make
|
||||
fi
|
||||
if ${@bb.utils.contains('PACKAGECONFIG', 'arp', 'true', 'false', d)} ; then
|
||||
echo "#define HAVE_ARP_TOOLS 1" >> ${S}/config.h
|
||||
echo "HAVE_ARP_TOOLS=1" >> ${S}/config.make
|
||||
fi
|
||||
if ${@bb.utils.contains('PACKAGECONFIG', 'serial', 'true', 'false', d)} ; then
|
||||
echo "#define HAVE_SERIAL_TOOLS 1" >> ${S}/config.h
|
||||
echo "HAVE_SERIAL_TOOLS=1" >> ${S}/config.make
|
||||
fi
|
||||
if ${@bb.utils.contains('PACKAGECONFIG', 'plip', 'true', 'false', d)} ; then
|
||||
echo "#define HAVE_PLIP_TOOLS 1" >> ${S}/config.h
|
||||
echo "HAVE_PLIP_TOOLS=1" >> ${S}/config.make
|
||||
fi
|
||||
}
|
||||
|
||||
do_compile() {
|
||||
# net-tools use COPTS/LOPTS to allow adding custom options
|
||||
oe_runmake COPTS="$CFLAGS" LOPTS="$LDFLAGS"
|
||||
}
|
||||
|
||||
do_install() {
|
||||
# We don't need COPTS or LOPTS, but let's be consistent.
|
||||
oe_runmake COPTS="$CFLAGS" LOPTS="$LDFLAGS" BASEDIR=${D} INSTALLNLSDIR=${D}${datadir}/locale mandir=${mandir} install
|
||||
|
||||
if [ "${base_bindir}" != "/bin" ]; then
|
||||
mkdir -p ${D}/${base_bindir}
|
||||
mv ${D}/bin/* ${D}/${base_bindir}/
|
||||
rmdir ${D}/bin
|
||||
fi
|
||||
if [ "${base_sbindir}" != "/sbin" ]; then
|
||||
mkdir ${D}/${base_sbindir}
|
||||
mv ${D}/sbin/* ${D}/${base_sbindir}/
|
||||
rmdir ${D}/sbin
|
||||
fi
|
||||
}
|
||||
|
||||
inherit update-alternatives
|
||||
|
||||
base_sbindir_progs = "ipmaddr iptunnel mii-tool nameif \
|
||||
${@bb.utils.contains('PACKAGECONFIG', 'arp', 'arp rarp', '', d)} \
|
||||
${@bb.utils.contains('PACKAGECONFIG', 'plip', 'plipconfig', '', d)} \
|
||||
${@bb.utils.contains('PACKAGECONFIG', 'serial', 'slattach', '', d)} \
|
||||
"
|
||||
base_bindir_progs = "ifconfig netstat route \
|
||||
${@bb.utils.contains('PACKAGECONFIG', 'hostname', 'dnsdomainname domainname hostname nisdomainname ypdomainname', '', d)} \
|
||||
"
|
||||
|
||||
ALTERNATIVE:${PN} = "${base_sbindir_progs} ${base_bindir_progs}"
|
||||
ALTERNATIVE:${PN}-doc += "${@bb.utils.contains('PACKAGECONFIG', 'hostname', 'hostname.1 dnsdomainname.1', '', d)}"
|
||||
ALTERNATIVE_LINK_NAME[hostname.1] = "${mandir}/man1/hostname.1"
|
||||
ALTERNATIVE_LINK_NAME[dnsdomainname.1] = "${mandir}/man1/dnsdomainname.1"
|
||||
ALTERNATIVE_PRIORITY[hostname.1] = "10"
|
||||
|
||||
python __anonymous() {
|
||||
for prog in d.getVar('base_sbindir_progs').split():
|
||||
d.setVarFlag('ALTERNATIVE_LINK_NAME', prog, '%s/%s' % (d.getVar('base_sbindir'), prog))
|
||||
for prog in d.getVar('base_bindir_progs').split():
|
||||
d.setVarFlag('ALTERNATIVE_LINK_NAME', prog, '%s/%s' % (d.getVar('base_bindir'), prog))
|
||||
}
|
||||
ALTERNATIVE_PRIORITY = "100"
|
||||
|
||||
NETTOOLS_PACKAGES = "${PN}-mii-tool"
|
||||
NETTOOLS_PACKAGES:class-native = ""
|
||||
|
||||
PACKAGE_BEFORE_PN = "${NETTOOLS_PACKAGES}"
|
||||
RDEPENDS:${PN} += "${NETTOOLS_PACKAGES}"
|
||||
|
||||
FILES:${PN}-mii-tool = "${base_sbindir}/mii-tool"
|
||||
|
||||
ALTERNATIVE:${PN}:remove = "mii-tool"
|
||||
|
||||
ALTERNATIVE:${PN}-mii-tool = "mii-tool"
|
||||
ALTERNATIVE_TARGET[mii-tool] = "${base_sbindir}/mii-tool"
|
||||
ALTERNATIVE_LINK_NAME[mii-tool] = "${base_sbindir}/mii-tool"
|
||||
|
||||
BBCLASSEXTEND = "native nativesdk"
|
||||
Reference in New Issue
Block a user