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,339 @@
|
||||
From aae03b7e626d5f62ab929d51d11352a5a2ff6b2d Mon Sep 17 00:00:00 2001
|
||||
From: Lei Maohui <leimaohui@cn.fujitsu.com>
|
||||
Date: Tue, 9 Jun 2015 11:11:48 +0900
|
||||
Subject: [PATCH 1/2] packlib.c: support dictionary byte order dependent
|
||||
|
||||
The previous dict files are NOT byte-order independent, in fact they are
|
||||
probably ARCHITECTURE SPECIFIC.
|
||||
Create the dict files in big endian, and convert to host endian while
|
||||
load them. This could fix the endian issue on multiple platform.
|
||||
|
||||
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
|
||||
Upstream-Status: Submitted [https://github.com/cracklib/cracklib/pull/41]
|
||||
|
||||
We can't use the endian.h, htobe* and be*toh functions because they are
|
||||
not available on older versions of glibc, such as that found in RHEL
|
||||
5.9.
|
||||
|
||||
Change to checking endian and directly calling bswap_* as defined in
|
||||
byteswap.h.
|
||||
|
||||
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
|
||||
|
||||
Signed-off-by: Lei Maohui <leimaohui@cn.fujitsu.com>
|
||||
---
|
||||
lib/packlib.c | 214 +++++++++++++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 210 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/lib/packlib.c b/lib/packlib.c
|
||||
index 9396e1d..d0bb181 100644
|
||||
--- a/lib/packlib.c
|
||||
+++ b/lib/packlib.c
|
||||
@@ -16,6 +16,12 @@
|
||||
#ifdef HAVE_STDINT_H
|
||||
#include <stdint.h>
|
||||
#endif
|
||||
+
|
||||
+#ifndef _BSD_SOURCE
|
||||
+#define _BSD_SOURCE /* See feature_test_macros(7) */
|
||||
+#endif
|
||||
+#include <endian.h>
|
||||
+#include <byteswap.h>
|
||||
#include "packer.h"
|
||||
|
||||
#define DEBUG 0
|
||||
@@ -43,6 +49,185 @@ typedef struct
|
||||
char data_get[NUMWORDS][MAXWORDLEN];
|
||||
} PWDICT64;
|
||||
|
||||
+enum{
|
||||
+ en_is32,
|
||||
+ en_is64
|
||||
+};
|
||||
+
|
||||
+static int
|
||||
+IheaderHostToBigEndian(char *pHeader, int nBitType)
|
||||
+{
|
||||
+ if (nBitType == en_is64 && __BYTE_ORDER == __LITTLE_ENDIAN)
|
||||
+ {
|
||||
+ struct pi_header64 *pHeader64 = (struct pi_header64*)pHeader;
|
||||
+
|
||||
+ pHeader64->pih_magic = bswap_64(pHeader64->pih_magic);
|
||||
+ pHeader64->pih_numwords = bswap_64(pHeader64->pih_numwords);
|
||||
+ pHeader64->pih_blocklen = bswap_16(pHeader64->pih_blocklen);
|
||||
+ pHeader64->pih_pad = bswap_16(pHeader64->pih_pad);
|
||||
+
|
||||
+#if DEBUG
|
||||
+ printf("Header64: magic %x, numwords %x, blocklen %x, pad %x\n",
|
||||
+ pHeader64->pih_magic, pHeader64->pih_numwords,
|
||||
+ pHeader64->pih_blocklen, pHeader64->pih_pad);
|
||||
+#endif
|
||||
+ }
|
||||
+ else if (nBitType == en_is32 && __BYTE_ORDER == __LITTLE_ENDIAN)
|
||||
+ {
|
||||
+ struct pi_header *pHeader32 = (struct pi_header*)pHeader;
|
||||
+
|
||||
+ pHeader32->pih_magic = bswap_32(pHeader32->pih_magic);
|
||||
+ pHeader32->pih_numwords = bswap_32(pHeader32->pih_numwords);
|
||||
+ pHeader32->pih_blocklen = bswap_16(pHeader32->pih_blocklen);
|
||||
+ pHeader32->pih_pad = bswap_16(pHeader32->pih_pad);
|
||||
+
|
||||
+#if DEBUG
|
||||
+ printf("Header32: magic %x, numwords %x, blocklen %x, pad %x\n",
|
||||
+ pHeader32->pih_magic, pHeader32->pih_numwords,
|
||||
+ pHeader32->pih_blocklen, pHeader32->pih_pad);
|
||||
+#endif
|
||||
+ }
|
||||
+ else if (__BYTE_ORDER == __LITTLE_ENDIAN)
|
||||
+ {
|
||||
+ fprintf(stderr, "Neither 32 or 64: %d\n", nBitType);
|
||||
+ return (-1);
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int
|
||||
+IheaderBigEndianToHost(char *pHeader, int nBitType)
|
||||
+{
|
||||
+ if (nBitType == en_is64 && __BYTE_ORDER == __LITTLE_ENDIAN)
|
||||
+ {
|
||||
+ struct pi_header64 *pHeader64 = (struct pi_header64*)pHeader;
|
||||
+
|
||||
+ pHeader64->pih_magic = bswap_64(pHeader64->pih_magic);
|
||||
+ pHeader64->pih_numwords = bswap_64(pHeader64->pih_numwords);
|
||||
+ pHeader64->pih_blocklen = bswap_16(pHeader64->pih_blocklen);
|
||||
+ pHeader64->pih_pad = bswap_16(pHeader64->pih_pad);
|
||||
+
|
||||
+#if DEBUG
|
||||
+ printf("Header64: magic %x, numwords %x, blocklen %x, pad %x\n",
|
||||
+ pHeader64->pih_magic, pHeader64->pih_numwords,
|
||||
+ pHeader64->pih_blocklen, pHeader64->pih_pad);
|
||||
+#endif
|
||||
+ }
|
||||
+ else if (nBitType == en_is32 && __BYTE_ORDER == __LITTLE_ENDIAN)
|
||||
+ {
|
||||
+ struct pi_header *pHeader32 = (struct pi_header*)pHeader;
|
||||
+
|
||||
+ pHeader32->pih_magic = bswap_32(pHeader32->pih_magic);
|
||||
+ pHeader32->pih_numwords = bswap_32(pHeader32->pih_numwords);
|
||||
+ pHeader32->pih_blocklen = bswap_16(pHeader32->pih_blocklen);
|
||||
+ pHeader32->pih_pad = bswap_16(pHeader32->pih_pad);
|
||||
+
|
||||
+#if DEBUG
|
||||
+ printf("Header32: magic %x, numwords %x, blocklen %x, pad %x\n",
|
||||
+ pHeader32->pih_magic, pHeader32->pih_numwords,
|
||||
+ pHeader32->pih_blocklen, pHeader32->pih_pad);
|
||||
+#endif
|
||||
+ }
|
||||
+ else if (__BYTE_ORDER == __LITTLE_ENDIAN)
|
||||
+ {
|
||||
+ fprintf(stderr, "Neither 32 or 64: %d\n", nBitType);
|
||||
+ return (-1);
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int
|
||||
+HwmsHostToBigEndian(char *pHwms, int nLen,int nBitType)
|
||||
+{
|
||||
+ int i = 0;
|
||||
+
|
||||
+ if (nBitType == en_is64 && __BYTE_ORDER == __LITTLE_ENDIAN)
|
||||
+ {
|
||||
+ uint64_t *pHwms64 = (uint64_t*)pHwms;
|
||||
+
|
||||
+ for (i = 0; i < nLen / sizeof(uint64_t); i++)
|
||||
+ {
|
||||
+ *pHwms64 = bswap_64(*pHwms64);
|
||||
+ *pHwms64++;
|
||||
+ }
|
||||
+
|
||||
+ }
|
||||
+ else if (nBitType == en_is32 && __BYTE_ORDER == __LITTLE_ENDIAN)
|
||||
+ {
|
||||
+ uint32_t *pHwms32 = (uint32_t*)pHwms;
|
||||
+
|
||||
+ for (i = 0; i < nLen / sizeof(uint32_t); i++)
|
||||
+ {
|
||||
+ *pHwms32 = bswap_32(*pHwms32);
|
||||
+ *pHwms32++;
|
||||
+ }
|
||||
+
|
||||
+ }
|
||||
+ else if (__BYTE_ORDER == __LITTLE_ENDIAN)
|
||||
+ {
|
||||
+ fprintf(stderr, "Neither 32 or 64: %d\n", nBitType);
|
||||
+ return (-1);
|
||||
+ }
|
||||
+
|
||||
+#if DEBUG
|
||||
+ for (i = 0; i < nLen; i+=8)
|
||||
+ {
|
||||
+ printf("hwms%s: %02X %02X %02X %02X %02X %02X %02X %02X\n",
|
||||
+ nBitType==en_is64?"64":"32", pHwms[i+0]&0xFF, pHwms[i+1]&0xFF,
|
||||
+ pHwms[i+2]&0xFF, pHwms[i+3]&0xFF, pHwms[i+4]&0xFF,
|
||||
+ pHwms[i+5]&0xFF, pHwms[i+6]&0xFF, pHwms[i+7]&0xFF);
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int
|
||||
+HwmsBigEndianToHost(char *pHwms, int nLen, int nBitType)
|
||||
+{
|
||||
+ int i = 0;
|
||||
+
|
||||
+ if (nBitType == en_is64 && __BYTE_ORDER == __LITTLE_ENDIAN)
|
||||
+ {
|
||||
+ uint64_t *pHwms64 = (uint64_t*)pHwms;
|
||||
+
|
||||
+ for (i = 0; i < nLen / sizeof(uint64_t); i++)
|
||||
+ {
|
||||
+ *pHwms64++ = bswap_64(*pHwms64);
|
||||
+ }
|
||||
+
|
||||
+ }
|
||||
+ else if (nBitType == en_is32 && __BYTE_ORDER == __LITTLE_ENDIAN)
|
||||
+ {
|
||||
+ uint32_t *pHwms32 = (uint32_t*)pHwms;
|
||||
+
|
||||
+ for (i = 0; i < nLen / sizeof(uint32_t); i++)
|
||||
+ {
|
||||
+ *pHwms32 = bswap_32(*pHwms32);
|
||||
+ *pHwms32++;
|
||||
+ }
|
||||
+
|
||||
+ }
|
||||
+ else if (__BYTE_ORDER == __LITTLE_ENDIAN)
|
||||
+ {
|
||||
+ fprintf(stderr, "Neither 32 or 64: %d\n", nBitType);
|
||||
+ return (-1);
|
||||
+ }
|
||||
+
|
||||
+#if DEBUG
|
||||
+ for (i = 0; i < nLen; i+=8)
|
||||
+ {
|
||||
+ printf("hwms%s: %02X %02X %02X %02X %02X %02X %02X %02X\n",
|
||||
+ nBitType==en_is64?"64":"32", pHwms[i+0]&0xFF, pHwms[i+1]&0xFF,
|
||||
+ pHwms[i+2]&0xFF, pHwms[i+3]&0xFF, pHwms[i+4]&0xFF,
|
||||
+ pHwms[i+5]&0xFF, pHwms[i+6]&0xFF, pHwms[i+7]&0xFF);
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
|
||||
static int
|
||||
_PWIsBroken64(FILE *ifp)
|
||||
@@ -55,6 +240,7 @@ _PWIsBroken64(FILE *ifp)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+ IheaderBigEndianToHost((char *) &pdesc64.header, en_is64);
|
||||
return (pdesc64.header.pih_magic == PIH_MAGIC);
|
||||
}
|
||||
|
||||
@@ -147,7 +333,11 @@ PWOpen(prefix, mode)
|
||||
pdesc.header.pih_blocklen = NUMWORDS;
|
||||
pdesc.header.pih_numwords = 0;
|
||||
|
||||
- fwrite((char *) &pdesc.header, sizeof(pdesc.header), 1, ifp);
|
||||
+ struct pi_header tmpheader32;
|
||||
+
|
||||
+ memcpy(&tmpheader32, &pdesc.header, sizeof(pdesc.header));
|
||||
+ IheaderHostToBigEndian((char *) &tmpheader32, en_is32);
|
||||
+ fwrite((char *) &tmpheader32, sizeof(tmpheader32), 1, ifp);
|
||||
} else
|
||||
{
|
||||
pdesc.flags &= ~PFOR_WRITE;
|
||||
@@ -171,6 +361,7 @@ PWOpen(prefix, mode)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
+ IheaderBigEndianToHost((char *) &pdesc.header, en_is32);
|
||||
if ((pdesc.header.pih_magic == 0) || (pdesc.header.pih_numwords == 0))
|
||||
{
|
||||
/* uh-oh. either a broken "64-bit" file or a garbage file. */
|
||||
@@ -193,6 +384,7 @@ PWOpen(prefix, mode)
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
+ IheaderBigEndianToHost((char *) &pdesc64.header, en_is64);
|
||||
if (pdesc64.header.pih_magic != PIH_MAGIC)
|
||||
{
|
||||
/* nope, not "64-bit" after all */
|
||||
@@ -288,6 +480,7 @@ PWOpen(prefix, mode)
|
||||
{
|
||||
pdesc.flags &= ~PFOR_USEHWMS;
|
||||
}
|
||||
+ HwmsBigEndianToHost((char*)pdesc64.hwms, sizeof(pdesc64.hwms), en_is64);
|
||||
for (i = 0; i < sizeof(pdesc.hwms) / sizeof(pdesc.hwms[0]); i++)
|
||||
{
|
||||
pdesc.hwms[i] = pdesc64.hwms[i];
|
||||
@@ -297,6 +490,7 @@ PWOpen(prefix, mode)
|
||||
{
|
||||
pdesc.flags &= ~PFOR_USEHWMS;
|
||||
}
|
||||
+ HwmsBigEndianToHost((char*)pdesc.hwms, sizeof(pdesc.hwms), en_is32);
|
||||
#if DEBUG
|
||||
for (i=1; i<=0xff; i++)
|
||||
{
|
||||
@@ -330,7 +524,11 @@ PWClose(pwp)
|
||||
return (-1);
|
||||
}
|
||||
|
||||
- if (!fwrite((char *) &pwp->header, sizeof(pwp->header), 1, pwp->ifp))
|
||||
+ struct pi_header tmpheader32;
|
||||
+
|
||||
+ memcpy(&tmpheader32, &pwp->header, sizeof(pwp->header));
|
||||
+ IheaderHostToBigEndian((char *) &tmpheader32, en_is32);
|
||||
+ if (!fwrite((char *) &tmpheader32, sizeof(tmpheader32), 1, pwp->ifp))
|
||||
{
|
||||
fprintf(stderr, "index magic fwrite failed\n");
|
||||
return (-1);
|
||||
@@ -349,7 +547,12 @@ PWClose(pwp)
|
||||
printf("hwm[%02x] = %d\n", i, pwp->hwms[i]);
|
||||
#endif
|
||||
}
|
||||
- fwrite(pwp->hwms, 1, sizeof(pwp->hwms), pwp->wfp);
|
||||
+
|
||||
+ PWDICT tmp_pwp;
|
||||
+
|
||||
+ memcpy(&tmp_pwp, pwp, sizeof(PWDICT));
|
||||
+ HwmsHostToBigEndian((char *)tmp_pwp.hwms, sizeof(tmp_pwp.hwms), en_is32);
|
||||
+ fwrite(tmp_pwp.hwms, 1, sizeof(tmp_pwp.hwms), pwp->wfp);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -403,7 +606,8 @@ PutPW(pwp, string)
|
||||
|
||||
datum = (uint32_t) ftell(pwp->dfp);
|
||||
|
||||
- fwrite((char *) &datum, sizeof(datum), 1, pwp->ifp);
|
||||
+ uint32_t tmpdatum = (__BYTE_ORDER == __LITTLE_ENDIAN) ? bswap_32(datum) : datum;
|
||||
+ fwrite((char *) &tmpdatum, sizeof(tmpdatum), 1, pwp->ifp);
|
||||
|
||||
fputs(pwp->data_put[0], pwp->dfp);
|
||||
putc(0, (FILE*) pwp->dfp);
|
||||
@@ -462,6 +666,7 @@ GetPW(pwp, number)
|
||||
perror("(index fread failed)");
|
||||
return NULL;
|
||||
}
|
||||
+ datum64 = (__BYTE_ORDER == __LITTLE_ENDIAN) ? bswap_64(datum64) : datum64;
|
||||
datum = datum64;
|
||||
} else {
|
||||
if (fseek(pwp->ifp, sizeof(struct pi_header) + (thisblock * sizeof(uint32_t)), 0))
|
||||
@@ -475,6 +680,7 @@ GetPW(pwp, number)
|
||||
perror("(index fread failed)");
|
||||
return NULL;
|
||||
}
|
||||
+ datum = (__BYTE_ORDER == __LITTLE_ENDIAN) ? bswap_32(datum) : datum;
|
||||
}
|
||||
|
||||
int r = 1;
|
||||
--
|
||||
2.20.1
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
SUMMARY = "Password strength checker library"
|
||||
HOMEPAGE = "https://github.com/cracklib/cracklib"
|
||||
DESCRIPTION = "${SUMMARY}"
|
||||
|
||||
LICENSE = "LGPL-2.1-or-later"
|
||||
LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=e3eda01d9815f8d24aae2dbd89b68b06"
|
||||
|
||||
DEPENDS = "cracklib-native zlib"
|
||||
|
||||
EXTRA_OECONF = "--without-python --libdir=${base_libdir}"
|
||||
|
||||
SRC_URI = "git://github.com/cracklib/cracklib;protocol=https;branch=main \
|
||||
file://0001-packlib.c-support-dictionary-byte-order-dependent.patch \
|
||||
"
|
||||
|
||||
SRCREV = "4cf5125250c6325ef0a2dc085eabff875227edc3"
|
||||
S = "${WORKDIR}/git/src"
|
||||
|
||||
inherit autotools gettext
|
||||
|
||||
# This is custom stuff from upstream's autogen.sh
|
||||
do_configure:prepend() {
|
||||
mkdir -p ${S}/m4
|
||||
echo EXTRA_DIST = *.m4 > ${S}/m4/Makefile.am
|
||||
touch ${S}/ABOUT-NLS
|
||||
}
|
||||
|
||||
do_install:append:class-target() {
|
||||
create-cracklib-dict -o ${D}${datadir}/cracklib/pw_dict ${D}${datadir}/cracklib/cracklib-small
|
||||
}
|
||||
|
||||
BBCLASSEXTEND = "native nativesdk"
|
||||
|
||||
Reference in New Issue
Block a user