Merge remote-tracking branch 'origin/3.7' into 3.8

This commit is contained in:
Tim Biermann 2023-09-16 09:46:56 +02:00
commit 78380caf21
46 changed files with 1797 additions and 105 deletions

View File

@ -1,5 +1,5 @@
untrusted comment: verify with /etc/ports/core.pub
RWRJc1FUaeVeqvvKudAzzVlvBfs5zRm2nLg5wYlXcM0NLoZpr/XJNLslWC9pTSkelXRemZCG24c+4Jgk4oDldeAz+ZhG6L7ZrQI=
SHA256 (Pkgfile) = 06370aa474647a22de5935d9312e8fdd623a646796a6fa5e39a8e6c67da4d612
RWRJc1FUaeVequ0Y1eEdIBwX2gjncLVP6ATyDnFk/5eUMpZ0RlOeXYt66saTHFYbaHDsn9UQLL+9sL5LNFz+BPhNvpbX5Q5+sQ4=
SHA256 (Pkgfile) = 17bbab31caca288b5c54097728ceffa7e58bf30b4db822bffe3422e39fea1d95
SHA256 (.footprint) = dc5a8773716c67f8298cb28aba8cdb89e40d01703503f2a6692879ccc93e1234
SHA256 (cmake-3.27.4.tar.gz) = 0a905ca8635ca81aa152e123bdde7e54cbe764fdd9a70d62af44cad8b92967af
SHA256 (cmake-3.27.5.tar.gz) = 5175e8fe1ca9b1dd09090130db7201968bcce1595971ff9e9998c2f0765004c9

View File

@ -5,7 +5,7 @@
# Optional: python3-sphinx
name=cmake
version=3.27.4
version=3.27.5
release=1
source=(https://cmake.org/files/v${version%.*}/$name-$version.tar.gz)

View File

@ -1,5 +1,5 @@
untrusted comment: verify with /etc/ports/core.pub
RWRJc1FUaeVeqqA4MrYc1Z8xw2CC+XmEwcciu7qTLscSdpuzAsEKQ62zjQkPRjfAV7wRScyKCNIk/SdK2aNvmFJ4dfxKwndWhw0=
SHA256 (Pkgfile) = 088947b01ae3b90e457234a9148d46b53cfcdcadc7be6603778bece9ba3014d7
RWRJc1FUaeVeqlqKtqEesugqYv6wRyb0hWhPbpgnYB8kmdxGVPZ3P7Np8bdIAD6rnkUb2mrAxveL9FV8syVha9YSJUseqGMbCg0=
SHA256 (Pkgfile) = 73bb9f75e70b7de12333dd5c694152069f2d0fe6829160b3a2c9b814b66b533a
SHA256 (.footprint) = 45c2d1805ada036f538df41d4f15b3148670d9247839effbc39276b9d0c37819
SHA256 (coreutils-9.3.tar.xz) = adbcfcfe899235b71e8768dcf07cd532520b7f54f9a8064843f8d199a904bbaa
SHA256 (coreutils-9.4.tar.xz) = ea613a4cf44612326e917201bbbcdfbd301de21ffc3b59b6e5c07e040b275e52

View File

@ -4,7 +4,7 @@
# Depends on: acl libcap libgmp
name=coreutils
version=9.3
version=9.4
release=1
source=(https://ftpmirror.gnu.org/gnu/$name/$name-$version.tar.xz)

View File

@ -453,6 +453,7 @@ drwxr-xr-x root/root usr/share/man/man3/
-rw-r--r-- root/root usr/share/man/man3/curl_global_init.3.gz
-rw-r--r-- root/root usr/share/man/man3/curl_global_init_mem.3.gz
-rw-r--r-- root/root usr/share/man/man3/curl_global_sslset.3.gz
-rw-r--r-- root/root usr/share/man/man3/curl_global_trace.3.gz
-rw-r--r-- root/root usr/share/man/man3/curl_mime_addpart.3.gz
-rw-r--r-- root/root usr/share/man/man3/curl_mime_data.3.gz
-rw-r--r-- root/root usr/share/man/man3/curl_mime_data_cb.3.gz

View File

@ -1,5 +1,5 @@
untrusted comment: verify with /etc/ports/core.pub
RWRJc1FUaeVequsKGnVCf3bcw8HuMqQoPhKbj6TZsXCRUvT9SmgIgRbV4Ux5W5DwlLKqsdFgPlLW7lcrq50wr37pRNkN6dYLeAo=
SHA256 (Pkgfile) = 02d28bf52184b975c2ed105f02c216f50731b0b3a488ff24dbbf6a424fe01e25
SHA256 (.footprint) = 66965c7953e03bd65d906a04259bab97f5d420f78a57e0ea1f8040d8483f9aac
SHA256 (curl-8.2.1.tar.xz) = dd322f6bd0a20e6cebdfd388f69e98c3d183bed792cf4713c8a7ef498cba4894
RWRJc1FUaeVeqm9zgIembZHBAzHCDOw4KhuOur5qsdbmi9wRmbYWNlwVlaaJfxLcWquq/dsNegMYfeJS6Mgf4C0FxNSKXmtcego=
SHA256 (Pkgfile) = eb1a55c6ff363adba743521ea6b7cf17fcaaf1ea778b0a6741f4932a75a23c18
SHA256 (.footprint) = 50adb77911a6304efb864b58422c65a52d2b8e5d87b5fec7775f5d031123c28e
SHA256 (curl-8.3.0.tar.xz) = 376d627767d6c4f05105ab6d497b0d9aba7111770dd9d995225478209c37ea63

View File

@ -1,10 +1,10 @@
# Description: A tool for transfering files with URL syntax
# Maintainer: CRUX System Team, core-ports at crux dot nu
# URL: https://curl.haxx.se
# Depends on: libnghttp2 openssl zlib zstd
# Depends on: libnghttp2 openssl zstd
name=curl
version=8.2.1
version=8.3.0
release=1
source=(https://curl.haxx.se/download/$name-$version.tar.xz)

View File

@ -1,6 +1,11 @@
untrusted comment: verify with /etc/ports/core.pub
RWRJc1FUaeVeqrh7KXSRKKCo0vxbFcBoj4FCW5kx6IP3V4GVGWMxJUV9nBH7dfBU5cDCUG3T7JCw4djz2FiWFdh7Xnyjy3EY/w0=
SHA256 (Pkgfile) = 8ce9442e01752eea990facbd90c944f997d4d0ca970a8eef699bc621acfe8e49
RWRJc1FUaeVeqj5XKkO80XLgulK5JXIPmsZPCbqUUMMeV6wLVgKSq++RdxdN7dJylzKpQ1ZY3wPQpho4dWCNF7VwxxOv28ut3A8=
SHA256 (Pkgfile) = e8f026bc130c720f4e1c44300c395dbebc7fbf3812a2fcbe6b63cc01325d9c8c
SHA256 (.footprint) = 3a4d0e8a4f718b7d171558a53799371c27bdcacf7991ef39b5c82e16d51b0f02
SHA256 (db-5.3.28.tar.gz) = e0a992d740709892e81f9d93f06daf305cf73fb81b545afe72478043172c3628
SHA256 (db-5.3.21-memp_stat-upstream-fix.patch) = 80714b9fc9f15f83452e85849897e53526685c5f611cb156decc48ebcac4009d
SHA256 (db-5.3.21-mutex_leak.patch) = 0bba53c23da0c15eae7ddf409e0c70f25946d7bcd5565ffcf9df1fadbff3e308
SHA256 (db-5.3.28-lemon_hash.patch) = 285e210c4e722b6644f0c7de43fa0ef324881875d3c083aa7b6cad0ed666e8e4
SHA256 (db-5.3.28-mmap-high-cpu-usage.patch) = 45b76375ffab07882df57999a492463e7bed36c25edf3b1d2d5dbca8c11c93ac
SHA256 (db-5.3.28_cve-2019-2708.patch) = f538d843acf0708b4a2d15678dfc6ee53b1e4e52a6c6a782dfc1a058395952c6
SHA256 (0001-atomic-Rename-local-__atomic_compare_exchange-to-avo.patch) = 696ac5af5473f0d85ecc6af44a85333c91500721fb5c33028c05e843429058d1

View File

@ -4,13 +4,24 @@
name=db
version=5.3.28
release=2
release=3
source=(https://download.oracle.com/berkeley-db/$name-$version.tar.gz
db-5.3.21-memp_stat-upstream-fix.patch
db-5.3.21-mutex_leak.patch
db-5.3.28-lemon_hash.patch
db-5.3.28-mmap-high-cpu-usage.patch
db-5.3.28_cve-2019-2708.patch
0001-atomic-Rename-local-__atomic_compare_exchange-to-avo.patch)
build() {
cd $name-$version
patch -p1 -i $SRC/0001-atomic-Rename-local-__atomic_compare_exchange-to-avo.patch
patch -p1 -i $SRC/db-5.3.21-memp_stat-upstream-fix.patch
patch -p1 -i $SRC/db-5.3.21-mutex_leak.patch
patch -p1 -i $SRC/db-5.3.28-lemon_hash.patch
patch -p1 -i $SRC/db-5.3.28-mmap-high-cpu-usage.patch
patch -p1 -i $SRC/db-5.3.28_cve-2019-2708.patch
cd build_unix
../dist/configure --prefix=/usr \

View File

@ -0,0 +1,183 @@
diff -r -u db-5.3.21_orig/src/mp/mp_stat.c db-5.3.21/src/mp/mp_stat.c
--- db-5.3.21_orig/src/mp/mp_stat.c 2012-05-12 01:57:53.000000000 +0800
+++ db-5.3.21/src/mp/mp_stat.c 2015-05-19 15:07:09.000000000 +0800
@@ -87,6 +87,13 @@
u_int32_t i;
uintmax_t tmp_wait, tmp_nowait;
+ /*
+ * The array holding the lengths related to the buffer allocated for *fspp.
+ * The first element of the array holds the number of entries allocated.
+ * The second element of the array holds the total number of bytes allocated.
+ */
+ u_int32_t fsp_len[2];
+
dbmp = env->mp_handle;
mp = dbmp->reginfo[0].primary;
@@ -193,32 +200,53 @@
if (fspp != NULL) {
*fspp = NULL;
- /* Count the MPOOLFILE structures. */
- i = 0;
- len = 0;
- if ((ret = __memp_walk_files(env,
- mp, __memp_count_files, &len, &i, flags)) != 0)
- return (ret);
+ while (*fspp == NULL) {
+ /* Count the MPOOLFILE structures. */
+ i = 0;
+ /*
+ * Allow space for the first __memp_get_files() to align the
+ * structure array to uintmax_t, DB_MPOOL_STAT's most
+ * restrictive field. [#23150]
+ */
+ len = sizeof(uintmax_t);
+ if ((ret = __memp_walk_files(env,
+ mp, __memp_count_files, &len, &i, flags)) != 0)
+ return (ret);
+
+ if (i == 0)
+ return (0);
+
+ /*
+ * Copy the number of DB_MPOOL_FSTAT entries and the number of
+ * bytes allocated for them into fsp_len. Do not count the space
+ * reserved for allignment.
+ */
+ fsp_len[0] = i;
+ fsp_len[1] = len - sizeof(uintmax_t);
- if (i == 0)
- return (0);
- len += sizeof(DB_MPOOL_FSTAT *); /* Trailing NULL */
+ len += sizeof(DB_MPOOL_FSTAT *); /* Trailing NULL */
- /* Allocate space */
- if ((ret = __os_umalloc(env, len, fspp)) != 0)
- return (ret);
+ /* Allocate space */
+ if ((ret = __os_umalloc(env, len, fspp)) != 0)
+ return (ret);
- tfsp = *fspp;
- *tfsp = NULL;
-
- /*
- * Files may have been opened since we counted, don't walk
- * off the end of the allocated space.
- */
- if ((ret = __memp_walk_files(env,
- mp, __memp_get_files, &tfsp, &i, flags)) != 0)
- return (ret);
+ tfsp = *fspp;
+ *tfsp = NULL;
+ /*
+ * Files may have been opened since we counted, if we walk off
+ * the end of the allocated space specified in fsp_len, retry.
+ */
+ if ((ret = __memp_walk_files(env,
+ mp, __memp_get_files, &tfsp, fsp_len, flags)) != 0) {
+ if (ret == DB_BUFFER_SMALL) {
+ __os_ufree(env, *fspp);
+ *fspp = NULL;
+ tfsp = NULL;
+ } else
+ return (ret);
+ }
+ }
*++tfsp = NULL;
}
@@ -286,28 +314,35 @@
* for the text file names.
*/
static int
-__memp_get_files(env, mfp, argp, countp, flags)
+__memp_get_files(env, mfp, argp, fsp_len, flags)
ENV *env;
MPOOLFILE *mfp;
void *argp;
- u_int32_t *countp;
+ u_int32_t fsp_len[];
u_int32_t flags;
{
DB_MPOOL *dbmp;
DB_MPOOL_FSTAT **tfsp, *tstruct;
char *name, *tname;
- size_t nlen;
+ size_t nlen, tlen;
- if (*countp == 0)
- return (0);
+ /* We walked through more files than argp was allocated for. */
+ if (fsp_len[0] == 0)
+ return DB_BUFFER_SMALL;
dbmp = env->mp_handle;
tfsp = *(DB_MPOOL_FSTAT ***)argp;
if (*tfsp == NULL) {
- /* Add 1 to count because we need to skip over the NULL. */
- tstruct = (DB_MPOOL_FSTAT *)(tfsp + *countp + 1);
- tname = (char *)(tstruct + *countp);
+ /*
+ * Add 1 to count because to skip over the NULL end marker.
+ * Align it further for DB_MPOOL_STAT's most restrictive field
+ * because uintmax_t might require stricter alignment than
+ * pointers; e.g., IP32 LL64 SPARC. [#23150]
+ */
+ tstruct = (DB_MPOOL_FSTAT *)&tfsp[fsp_len[0] + 1];
+ tstruct = ALIGNP_INC(tstruct, sizeof(uintmax_t));
+ tname = (char *)&tstruct[fsp_len[0]];
*tfsp = tstruct;
} else {
tstruct = *tfsp + 1;
@@ -317,6 +352,15 @@
name = __memp_fns(dbmp, mfp);
nlen = strlen(name) + 1;
+
+ /* The space required for file names is larger than argp was allocated for. */
+ tlen = sizeof(DB_MPOOL_FSTAT *) + sizeof(DB_MPOOL_FSTAT) + nlen;
+ if (fsp_len[1] < tlen)
+ return DB_BUFFER_SMALL;
+ else
+ /* Count down the number of bytes left in argp. */
+ fsp_len[1] -= tlen;
+
memcpy(tname, name, nlen);
memcpy(tstruct, &mfp->stat, sizeof(mfp->stat));
tstruct->file_name = tname;
@@ -325,7 +369,9 @@
tstruct->st_pagesize = mfp->pagesize;
*(DB_MPOOL_FSTAT ***)argp = tfsp;
- (*countp)--;
+
+ /* Count down the number of entries left in argp. */
+ fsp_len[0]--;
if (LF_ISSET(DB_STAT_CLEAR))
memset(&mfp->stat, 0, sizeof(mfp->stat));
diff -r -u db-5.3.21_orig/src/mp/mp_sync.c db-5.3.21/src/mp/mp_sync.c
--- db-5.3.21_orig/src/mp/mp_sync.c 2012-05-12 01:57:53.000000000 +0800
+++ db-5.3.21/src/mp/mp_sync.c 2015-05-19 15:08:05.000000000 +0800
@@ -57,11 +57,13 @@
if ((t_ret = func(env,
mfp, arg, countp, flags)) != 0 && ret == 0)
ret = t_ret;
- if (ret != 0 && !LF_ISSET(DB_STAT_MEMP_NOERROR))
+ if (ret != 0 &&
+ (!LF_ISSET(DB_STAT_MEMP_NOERROR) || ret == DB_BUFFER_SMALL))
break;
}
MUTEX_UNLOCK(env, hp->mtx_hash);
- if (ret != 0 && !LF_ISSET(DB_STAT_MEMP_NOERROR))
+ if (ret != 0 &&
+ (!LF_ISSET(DB_STAT_MEMP_NOERROR) || ret == DB_BUFFER_SMALL))
break;
}
return (ret);

View File

@ -0,0 +1,718 @@
diff -U 5 -r db-5.3.21.old/src/dbinc_auto/int_def.in db-5.3.21/src/dbinc_auto/int_def.in
--- db-5.3.21.old/src/dbinc_auto/int_def.in 2012-05-12 01:57:53.000000000 +0800
+++ db-5.3.21/src/dbinc_auto/int_def.in 2016-10-25 22:40:58.000000000 +0800
@@ -1371,10 +1371,11 @@
#define __memp_failchk __memp_failchk@DB_VERSION_UNIQUE_NAME@
#define __memp_bhwrite __memp_bhwrite@DB_VERSION_UNIQUE_NAME@
#define __memp_pgread __memp_pgread@DB_VERSION_UNIQUE_NAME@
#define __memp_pg __memp_pg@DB_VERSION_UNIQUE_NAME@
#define __memp_bhfree __memp_bhfree@DB_VERSION_UNIQUE_NAME@
+#define __memp_bh_clear_dirty __memp_bh_clear_dirty@DB_VERSION_UNIQUE_NAME@
#define __memp_fget_pp __memp_fget_pp@DB_VERSION_UNIQUE_NAME@
#define __memp_fget __memp_fget@DB_VERSION_UNIQUE_NAME@
#define __memp_fcreate_pp __memp_fcreate_pp@DB_VERSION_UNIQUE_NAME@
#define __memp_fcreate __memp_fcreate@DB_VERSION_UNIQUE_NAME@
#define __memp_set_clear_len __memp_set_clear_len@DB_VERSION_UNIQUE_NAME@
@@ -1395,10 +1396,11 @@
#define __memp_fopen __memp_fopen@DB_VERSION_UNIQUE_NAME@
#define __memp_fclose_pp __memp_fclose_pp@DB_VERSION_UNIQUE_NAME@
#define __memp_fclose __memp_fclose@DB_VERSION_UNIQUE_NAME@
#define __memp_mf_discard __memp_mf_discard@DB_VERSION_UNIQUE_NAME@
#define __memp_inmemlist __memp_inmemlist@DB_VERSION_UNIQUE_NAME@
+#define __memp_mf_mark_dead __memp_mf_mark_dead@DB_VERSION_UNIQUE_NAME@
#define __memp_fput_pp __memp_fput_pp@DB_VERSION_UNIQUE_NAME@
#define __memp_fput __memp_fput@DB_VERSION_UNIQUE_NAME@
#define __memp_unpin_buffers __memp_unpin_buffers@DB_VERSION_UNIQUE_NAME@
#define __memp_dirty __memp_dirty@DB_VERSION_UNIQUE_NAME@
#define __memp_shared __memp_shared@DB_VERSION_UNIQUE_NAME@
@@ -1453,10 +1455,11 @@
#define __memp_fsync_pp __memp_fsync_pp@DB_VERSION_UNIQUE_NAME@
#define __memp_fsync __memp_fsync@DB_VERSION_UNIQUE_NAME@
#define __mp_xxx_fh __mp_xxx_fh@DB_VERSION_UNIQUE_NAME@
#define __memp_sync_int __memp_sync_int@DB_VERSION_UNIQUE_NAME@
#define __memp_mf_sync __memp_mf_sync@DB_VERSION_UNIQUE_NAME@
+#define __memp_purge_dead_files __memp_purge_dead_files@DB_VERSION_UNIQUE_NAME@
#define __memp_trickle_pp __memp_trickle_pp@DB_VERSION_UNIQUE_NAME@
#define __mutex_alloc __mutex_alloc@DB_VERSION_UNIQUE_NAME@
#define __mutex_alloc_int __mutex_alloc_int@DB_VERSION_UNIQUE_NAME@
#define __mutex_free __mutex_free@DB_VERSION_UNIQUE_NAME@
#define __mutex_free_int __mutex_free_int@DB_VERSION_UNIQUE_NAME@
diff -U 5 -r db-5.3.21.old/src/dbinc_auto/mp_ext.h db-5.3.21/src/dbinc_auto/mp_ext.h
--- db-5.3.21.old/src/dbinc_auto/mp_ext.h 2012-05-12 01:57:53.000000000 +0800
+++ db-5.3.21/src/dbinc_auto/mp_ext.h 2016-10-25 22:40:58.000000000 +0800
@@ -14,10 +14,11 @@
int __memp_failchk __P((ENV *));
int __memp_bhwrite __P((DB_MPOOL *, DB_MPOOL_HASH *, MPOOLFILE *, BH *, int));
int __memp_pgread __P((DB_MPOOLFILE *, BH *, int));
int __memp_pg __P((DB_MPOOLFILE *, db_pgno_t, void *, int));
int __memp_bhfree __P((DB_MPOOL *, REGINFO *, MPOOLFILE *, DB_MPOOL_HASH *, BH *, u_int32_t));
+void __memp_bh_clear_dirty __P((ENV*, DB_MPOOL_HASH *, BH *));
int __memp_fget_pp __P((DB_MPOOLFILE *, db_pgno_t *, DB_TXN *, u_int32_t, void *));
int __memp_fget __P((DB_MPOOLFILE *, db_pgno_t *, DB_THREAD_INFO *, DB_TXN *, u_int32_t, void *));
int __memp_fcreate_pp __P((DB_ENV *, DB_MPOOLFILE **, u_int32_t));
int __memp_fcreate __P((ENV *, DB_MPOOLFILE **));
int __memp_set_clear_len __P((DB_MPOOLFILE *, u_int32_t));
@@ -38,10 +39,11 @@
int __memp_fopen __P((DB_MPOOLFILE *, MPOOLFILE *, const char *, const char **, u_int32_t, int, size_t));
int __memp_fclose_pp __P((DB_MPOOLFILE *, u_int32_t));
int __memp_fclose __P((DB_MPOOLFILE *, u_int32_t));
int __memp_mf_discard __P((DB_MPOOL *, MPOOLFILE *, int));
int __memp_inmemlist __P((ENV *, char ***, int *));
+void __memp_mf_mark_dead __P((DB_MPOOL *, MPOOLFILE *, int*));
int __memp_fput_pp __P((DB_MPOOLFILE *, void *, DB_CACHE_PRIORITY, u_int32_t));
int __memp_fput __P((DB_MPOOLFILE *, DB_THREAD_INFO *, void *, DB_CACHE_PRIORITY));
int __memp_unpin_buffers __P((ENV *, DB_THREAD_INFO *));
int __memp_dirty __P((DB_MPOOLFILE *, void *, DB_THREAD_INFO *, DB_TXN *, DB_CACHE_PRIORITY, u_int32_t));
int __memp_shared __P((DB_MPOOLFILE *, void *));
@@ -96,10 +98,11 @@
int __memp_fsync_pp __P((DB_MPOOLFILE *));
int __memp_fsync __P((DB_MPOOLFILE *));
int __mp_xxx_fh __P((DB_MPOOLFILE *, DB_FH **));
int __memp_sync_int __P((ENV *, DB_MPOOLFILE *, u_int32_t, u_int32_t, u_int32_t *, int *));
int __memp_mf_sync __P((DB_MPOOL *, MPOOLFILE *, int));
+int __memp_purge_dead_files __P((ENV *));
int __memp_trickle_pp __P((DB_ENV *, int, int *));
#if defined(__cplusplus)
}
#endif
diff -U 5 -r db-5.3.21.old/src/mp/mp_bh.c db-5.3.21/src/mp/mp_bh.c
--- db-5.3.21.old/src/mp/mp_bh.c 2012-05-12 01:57:53.000000000 +0800
+++ db-5.3.21/src/mp/mp_bh.c 2016-10-25 17:09:35.000000000 +0800
@@ -472,15 +472,12 @@
* a shared latch.
*/
if (F_ISSET(bhp, BH_DIRTY | BH_TRASH)) {
MUTEX_LOCK(env, hp->mtx_hash);
DB_ASSERT(env, !SH_CHAIN_HASNEXT(bhp, vc));
- if (ret == 0 && F_ISSET(bhp, BH_DIRTY)) {
- F_CLR(bhp, BH_DIRTY | BH_DIRTY_CREATE);
- DB_ASSERT(env, atomic_read(&hp->hash_page_dirty) > 0);
- atomic_dec(env, &hp->hash_page_dirty);
- }
+ if (ret == 0)
+ __memp_bh_clear_dirty(env, hp, bhp);
/* put the page back if necessary. */
if ((ret != 0 || BH_REFCOUNT(bhp) > 1) &&
F_ISSET(bhp, BH_TRASH)) {
ret = __memp_pg(dbmfp, bhp->pgno, bhp->buf, 1);
@@ -686,5 +683,31 @@
} else
MUTEX_UNLOCK(env, mfp->mutex);
return (ret);
}
+
+/*
+ * __memp_bh_clear_dirty --
+ * Clear the dirty flag of of a buffer. Calls on the same buffer must be
+ * serialized to get the accounting correct. This can be achieved by
+ * acquiring an exclusive lock on the buffer, a shared lock on the
+ * buffer plus an exclusive lock on the hash bucket, or some other
+ * mechanism that guarantees single-thread access to the entire region
+ * (e.g. during __memp_region_bhfree()).
+ *
+ * PUBLIC: void __memp_bh_clear_dirty __P((ENV*, DB_MPOOL_HASH *, BH *));
+ */
+void
+__memp_bh_clear_dirty(env, hp, bhp)
+ ENV *env;
+ DB_MPOOL_HASH *hp;
+ BH *bhp;
+{
+ COMPQUIET(env, env);
+ if (F_ISSET(bhp, BH_DIRTY)) {
+ F_CLR(bhp, BH_DIRTY | BH_DIRTY_CREATE);
+ DB_ASSERT(env, atomic_read(&hp->hash_page_dirty) > 0);
+ (void)atomic_dec(env, &hp->hash_page_dirty);
+ }
+}
+
diff -U 5 -r db-5.3.21.old/src/mp/mp_fget.c db-5.3.21/src/mp/mp_fget.c
--- db-5.3.21.old/src/mp/mp_fget.c 2012-05-12 01:57:53.000000000 +0800
+++ db-5.3.21/src/mp/mp_fget.c 2016-10-25 17:11:08.000000000 +0800
@@ -437,16 +437,11 @@
* complain and get out.
*/
if (flags == DB_MPOOL_FREE) {
freebuf: MUTEX_LOCK(env, hp->mtx_hash);
h_locked = 1;
- if (F_ISSET(bhp, BH_DIRTY)) {
- F_CLR(bhp, BH_DIRTY | BH_DIRTY_CREATE);
- DB_ASSERT(env,
- atomic_read(&hp->hash_page_dirty) > 0);
- atomic_dec(env, &hp->hash_page_dirty);
- }
+ __memp_bh_clear_dirty(env, hp, bhp);
/*
* If the buffer we found is already freed, we're done.
* If the ref count is not 1 then someone may be
* peeking at the buffer. We cannot free it until they
diff -U 5 -r db-5.3.21.old/src/mp/mp_fopen.c db-5.3.21/src/mp/mp_fopen.c
--- db-5.3.21.old/src/mp/mp_fopen.c 2012-05-12 01:57:53.000000000 +0800
+++ db-5.3.21/src/mp/mp_fopen.c 2016-10-25 22:31:05.000000000 +0800
@@ -12,10 +12,11 @@
#include "dbinc/log.h"
#include "dbinc/mp.h"
#include "dbinc/db_page.h"
#include "dbinc/hash.h"
+static int __memp_count_dead_mutex __P((DB_MPOOL *, u_int32_t *));
static int __memp_mpf_alloc __P((DB_MPOOL *,
DB_MPOOLFILE *, const char *, u_int32_t, u_int32_t, MPOOLFILE **));
static int __memp_mpf_find __P((ENV *,
DB_MPOOLFILE *, DB_MPOOL_HASH *, const char *, u_int32_t, MPOOLFILE **));
@@ -709,11 +710,15 @@
* We should be able to set mfp to NULL and break out of the
* loop, but I like the idea of checking all the entries.
*/
if (LF_ISSET(DB_TRUNCATE)) {
MUTEX_LOCK(env, mfp->mutex);
- mfp->deadfile = 1;
+ /*
+ * We cannot purge dead files here, because the caller
+ * is holding the mutex of the hash bucket of mfp.
+ */
+ __memp_mf_mark_dead(dbmp, mfp, NULL);
MUTEX_UNLOCK(env, mfp->mutex);
continue;
}
/*
@@ -907,14 +912,15 @@
DB_MPOOL *dbmp;
ENV *env;
MPOOLFILE *mfp;
char *rpath;
u_int32_t ref;
- int deleted, ret, t_ret;
+ int deleted, purge_dead, ret, t_ret;
env = dbmfp->env;
dbmp = env->mp_handle;
+ purge_dead = 0;
ret = 0;
/*
* Remove the DB_MPOOLFILE from the process' list.
*
@@ -1004,11 +1010,11 @@
}
DB_ASSERT(env, mfp->neutral_cnt < mfp->mpf_cnt);
if (--mfp->mpf_cnt == 0 || LF_ISSET(DB_MPOOL_DISCARD)) {
if (LF_ISSET(DB_MPOOL_DISCARD) ||
F_ISSET(mfp, MP_TEMP) || mfp->unlink_on_close) {
- mfp->deadfile = 1;
+ __memp_mf_mark_dead(dbmp, mfp, &purge_dead);
}
if (mfp->unlink_on_close) {
if ((t_ret = __db_appname(dbmp->env, DB_APP_DATA,
R_ADDR(dbmp->reginfo, mfp->path_off), NULL,
&rpath)) != 0 && ret == 0)
@@ -1037,10 +1043,12 @@
deleted = 1;
}
}
if (!deleted && !LF_ISSET(DB_MPOOL_NOLOCK))
MUTEX_UNLOCK(env, mfp->mutex);
+ if (purge_dead)
+ (void)__memp_purge_dead_files(env);
done: /* Discard the DB_MPOOLFILE structure. */
if (dbmfp->pgcookie != NULL) {
__os_free(env, dbmfp->pgcookie->data);
__os_free(env, dbmfp->pgcookie);
@@ -1091,11 +1099,11 @@
/*
* We have to release the MPOOLFILE mutex before acquiring the region
* mutex so we don't deadlock. Make sure nobody ever looks at this
* structure again.
*/
- mfp->deadfile = 1;
+ __memp_mf_mark_dead(dbmp, mfp, NULL);
/* Discard the mutex we're holding and return it too the pool. */
MUTEX_UNLOCK(env, mfp->mutex);
if ((t_ret = __mutex_free(env, &mfp->mutex)) != 0 && ret == 0)
ret = t_ret;
@@ -1216,5 +1224,106 @@
/* Make sure we don't return any garbage. */
*cntp = 0;
*namesp = NULL;
return (ret);
}
+
+/*
+ * __memp_mf_mark_dead --
+ * Mark an MPOOLFILE as dead because its contents are no longer necessary.
+ * This happens when removing, truncation, or closing an unnamed in-memory
+ * database. Return, in the purgep parameter, whether the caller should
+ * call __memp_purge_dead_files() after the lock on mfp is released. The
+ * caller must hold an exclusive lock on the mfp handle.
+ *
+ * PUBLIC: void __memp_mf_mark_dead __P((DB_MPOOL *, MPOOLFILE *, int*));
+ */
+void
+__memp_mf_mark_dead(dbmp, mfp, purgep)
+ DB_MPOOL *dbmp;
+ MPOOLFILE *mfp;
+ int *purgep;
+{
+ ENV *env;
+#ifdef HAVE_MUTEX_SUPPORT
+ REGINFO *infop;
+ DB_MUTEXREGION *mtxregion;
+ u_int32_t mutex_max, mutex_inuse, dead_mutex;
+#endif
+
+ if (purgep != NULL)
+ *purgep = 0;
+
+ env = dbmp->env;
+
+#ifdef HAVE_MUTEX_SUPPORT
+ MUTEX_REQUIRED(env, mfp->mutex);
+
+ if (MUTEX_ON(env) && mfp->deadfile == 0) {
+ infop = &env->mutex_handle->reginfo;
+ mtxregion = infop->primary;
+
+ mutex_inuse = mtxregion->stat.st_mutex_inuse;
+ if ((mutex_max = env->dbenv->mutex_max) == 0)
+ mutex_max = infop->rp->max / mtxregion->mutex_size;
+
+ /*
+ * Purging dead pages requires a full scan of the entire cache
+ * buffer, so it is a slow operation. We only want to do it
+ * when it is necessary and provides enough benefits. Below is
+ * a simple heuristic that determines when to purge all dead
+ * pages.
+ */
+ if (purgep != NULL && mutex_inuse > mutex_max - 200) {
+ /*
+ * If the mutex region is almost full and there are
+ * many mutexes held by dead files, purge dead files.
+ */
+ (void)__memp_count_dead_mutex(dbmp, &dead_mutex);
+ dead_mutex += mfp->block_cnt + 1;
+
+ if (dead_mutex > mutex_inuse / 20)
+ *purgep = 1;
+ }
+ }
+#endif
+
+ mfp->deadfile = 1;
+}
+
+/*
+ * __memp_count_dead_mutex --
+ * Estimate the number of mutexes held by dead files.
+ */
+static int
+__memp_count_dead_mutex(dbmp, dead_mutex)
+ DB_MPOOL *dbmp;
+ u_int32_t *dead_mutex;
+{
+ ENV *env;
+ DB_MPOOL_HASH *hp;
+ MPOOL *mp;
+ MPOOLFILE *mfp;
+ u_int32_t mutex_per_file;
+ int busy, i;
+
+ env = dbmp->env;
+ *dead_mutex = 0;
+ mutex_per_file = 1;
+#ifndef HAVE_ATOMICFILEREAD
+ mutex_per_file = 2;
+#endif
+ mp = dbmp->reginfo[0].primary;
+ hp = R_ADDR(dbmp->reginfo, mp->ftab);
+ for (i = 0; i < MPOOL_FILE_BUCKETS; i++, hp++) {
+ busy = MUTEX_TRYLOCK(env, hp->mtx_hash);
+ if (busy)
+ continue;
+ SH_TAILQ_FOREACH(mfp, &hp->hash_bucket, q, __mpoolfile) {
+ if (mfp->deadfile)
+ *dead_mutex += mfp->block_cnt + mutex_per_file;
+ }
+ MUTEX_UNLOCK(env, hp->mtx_hash);
+ }
+
+ return (0);
+}
diff -U 5 -r db-5.3.21.old/src/mp/mp_method.c db-5.3.21/src/mp/mp_method.c
--- db-5.3.21.old/src/mp/mp_method.c 2012-05-12 01:57:53.000000000 +0800
+++ db-5.3.21/src/mp/mp_method.c 2016-10-25 17:22:23.000000000 +0800
@@ -638,11 +638,11 @@
DB_MPOOL_HASH *hp, *nhp;
MPOOL *mp;
MPOOLFILE *mfp;
roff_t newname_off;
u_int32_t bucket;
- int locked, ret;
+ int locked, purge_dead, ret;
size_t nlen;
void *p;
#undef op_is_remove
#define op_is_remove (newname == NULL)
@@ -655,10 +655,11 @@
dbmp = NULL;
mfp = NULL;
nhp = NULL;
p = NULL;
locked = ret = 0;
+ purge_dead = 0;
if (!MPOOL_ON(env))
goto fsop;
dbmp = env->mp_handle;
@@ -747,11 +748,11 @@
* they do not get reclaimed as long as they exist. Since we
* are now deleting the database, we need to dec that count.
*/
if (mfp->no_backing_file)
mfp->mpf_cnt--;
- mfp->deadfile = 1;
+ __memp_mf_mark_dead(dbmp, mfp, &purge_dead);
MUTEX_UNLOCK(env, mfp->mutex);
} else {
/*
* Else, it's a rename. We've allocated memory for the new
* name. Swap it with the old one. If it's in memory we
@@ -806,10 +807,16 @@
if (locked == 1) {
MUTEX_UNLOCK(env, hp->mtx_hash);
if (nhp != NULL && nhp != hp)
MUTEX_UNLOCK(env, nhp->mtx_hash);
}
+ /*
+ * __memp_purge_dead_files() must be called when the hash bucket is
+ * unlocked.
+ */
+ if (purge_dead)
+ (void)__memp_purge_dead_files(env);
return (ret);
}
/*
* __memp_ftruncate __
diff -U 5 -r db-5.3.21.old/src/mp/mp_sync.c db-5.3.21/src/mp/mp_sync.c
--- db-5.3.21.old/src/mp/mp_sync.c 2012-05-12 01:57:53.000000000 +0800
+++ db-5.3.21/src/mp/mp_sync.c 2016-10-25 17:26:58.000000000 +0800
@@ -24,10 +24,11 @@
static int __bhcmp __P((const void *, const void *));
static int __memp_close_flush_files __P((ENV *, int));
static int __memp_sync_files __P((ENV *));
static int __memp_sync_file __P((ENV *,
MPOOLFILE *, void *, u_int32_t *, u_int32_t));
+static inline void __update_err_ret(int, int*);
/*
* __memp_walk_files --
* PUBLIC: int __memp_walk_files __P((ENV *, MPOOL *,
* PUBLIC: int (*) __P((ENV *, MPOOLFILE *, void *,
@@ -961,5 +962,125 @@
return (-1);
if (bhp1->track_pgno > bhp2->track_pgno)
return (1);
return (0);
}
+
+/*
+ * __memp_purge_dead_files --
+ * Remove all dead files and their buffers from the mpool. The caller
+ * cannot hold any lock on the dead MPOOLFILE handles, their buffers
+ * or their hash buckets.
+ *
+ * PUBLIC: int __memp_purge_dead_files __P((ENV *));
+ */
+int
+__memp_purge_dead_files(env)
+ ENV *env;
+{
+ BH *bhp;
+ DB_MPOOL *dbmp;
+ DB_MPOOL_HASH *hp, *hp_end;
+ REGINFO *infop;
+ MPOOL *c_mp, *mp;
+ MPOOLFILE *mfp;
+ u_int32_t i_cache;
+ int ret, t_ret, h_lock;
+
+ if (!MPOOL_ON(env))
+ return (0);
+
+ dbmp = env->mp_handle;
+ mp = dbmp->reginfo[0].primary;
+ ret = t_ret = h_lock = 0;
+
+ /*
+ * Walk each cache's list of buffers and free all buffers whose
+ * MPOOLFILE is marked as dead.
+ */
+ for (i_cache = 0; i_cache < mp->nreg; i_cache++) {
+ infop = &dbmp->reginfo[i_cache];
+ c_mp = infop->primary;
+
+ hp = R_ADDR(infop, c_mp->htab);
+ hp_end = &hp[c_mp->htab_buckets];
+ for (; hp < hp_end; hp++) {
+ /* Skip empty buckets. */
+ if (SH_TAILQ_FIRST(&hp->hash_bucket, __bh) == NULL)
+ continue;
+
+ /*
+ * Search for a dead buffer. Other places that call
+ * __memp_bhfree() acquire the buffer lock before the
+ * hash bucket lock. Even though we acquire the two
+ * locks in reverse order, we cannot deadlock here
+ * because we don't block waiting for the locks.
+ */
+ t_ret = MUTEX_TRYLOCK(env, hp->mtx_hash);
+ if (t_ret != 0) {
+ __update_err_ret(t_ret, &ret);
+ continue;
+ }
+ h_lock = 1;
+ SH_TAILQ_FOREACH(bhp, &hp->hash_bucket, hq, __bh) {
+ /* Skip buffers that are being used. */
+ if (BH_REFCOUNT(bhp) > 0)
+ continue;
+
+ mfp = R_ADDR(dbmp->reginfo, bhp->mf_offset);
+ if (!mfp->deadfile)
+ continue;
+
+ /* Found a dead buffer. Prepare to free it. */
+ t_ret = MUTEX_TRYLOCK(env, bhp->mtx_buf);
+ if (t_ret != 0) {
+ __update_err_ret(t_ret, &ret);
+ continue;
+ }
+
+ DB_ASSERT(env, (!F_ISSET(bhp, BH_EXCLUSIVE) &&
+ BH_REFCOUNT(bhp) == 0));
+ F_SET(bhp, BH_EXCLUSIVE);
+ (void)atomic_inc(env, &bhp->ref);
+
+ __memp_bh_clear_dirty(env, hp, bhp);
+
+ /*
+ * Free the buffer. The buffer and hash bucket
+ * are unlocked by __memp_bhfree.
+ */
+ if ((t_ret = __memp_bhfree(dbmp, infop, mfp,
+ hp, bhp, BH_FREE_FREEMEM)) == 0)
+ /*
+ * Decrement hp, so the next turn will
+ * search the same bucket again.
+ */
+ hp--;
+ else
+ __update_err_ret(t_ret, &ret);
+
+ /*
+ * The hash bucket is unlocked, we need to
+ * start over again.
+ */
+ h_lock = 0;
+ break;
+ }
+
+ if (h_lock) {
+ MUTEX_UNLOCK(env, hp->mtx_hash);
+ h_lock = 0;
+ }
+ }
+ }
+
+ return (ret);
+}
+
+static inline void
+__update_err_ret(t_ret, retp)
+ int t_ret;
+ int *retp;
+{
+ if (t_ret != 0 && t_ret != DB_LOCK_NOTGRANTED && *retp == 0)
+ *retp = t_ret;
+}
diff -U 5 -r db-5.3.21.old/src/mp/mp_trickle.c db-5.3.21/src/mp/mp_trickle.c
--- db-5.3.21.old/src/mp/mp_trickle.c 2012-05-12 01:57:53.000000000 +0800
+++ db-5.3.21/src/mp/mp_trickle.c 2016-10-25 17:27:57.000000000 +0800
@@ -65,10 +65,14 @@
"DB_ENV->memp_trickle: %d: percent must be between 1 and 100",
"%d"), pct);
return (EINVAL);
}
+ /* First we purge all dead files and their buffers. */
+ if ((ret = __memp_purge_dead_files(env)) != 0)
+ return (ret);
+
/*
* Loop through the caches counting total/dirty buffers.
*
* XXX
* Using hash_page_dirty is our only choice at the moment, but it's not
diff -U 5 -r db-5.3.21.old/src/mutex/mut_region.c db-5.3.21/src/mutex/mut_region.c
--- db-5.3.21.old/src/mutex/mut_region.c 2012-05-12 01:57:54.000000000 +0800
+++ db-5.3.21/src/mutex/mut_region.c 2016-10-25 17:34:22.000000000 +0800
@@ -15,11 +15,11 @@
#include "dbinc/txn.h"
static db_size_t __mutex_align_size __P((ENV *));
static int __mutex_region_init __P((ENV *, DB_MUTEXMGR *));
static size_t __mutex_region_size __P((ENV *));
-static size_t __mutex_region_max __P((ENV *));
+static size_t __mutex_region_max __P((ENV *, u_int32_t));
/*
* __mutex_open --
* Open a mutex region.
*
@@ -32,11 +32,11 @@
{
DB_ENV *dbenv;
DB_MUTEXMGR *mtxmgr;
DB_MUTEXREGION *mtxregion;
size_t size;
- u_int32_t cpu_count;
+ u_int32_t cpu_count, mutex_needed;
int ret;
#ifndef HAVE_ATOMIC_SUPPORT
u_int i;
#endif
@@ -59,23 +59,24 @@
cpu_count : cpu_count * MUTEX_SPINS_PER_PROCESSOR)) != 0)
return (ret);
}
/*
- * If the user didn't set an absolute value on the number of mutexes
- * we'll need, figure it out. We're conservative in our allocation,
- * we need mutexes for DB handles, group-commit queues and other things
- * applications allocate at run-time. The application may have kicked
- * up our count to allocate its own mutexes, add that in.
+ * Figure out the number of mutexes we'll need. We're conservative in
+ * our allocation, we need mutexes for DB handles, group-commit queues
+ * and other things applications allocate at run-time. The application
+ * may have kicked up our count to allocate its own mutexes, add that
+ * in.
*/
+ mutex_needed =
+ __lock_region_mutex_count(env) +
+ __log_region_mutex_count(env) +
+ __memp_region_mutex_count(env) +
+ __txn_region_mutex_count(env);
if (dbenv->mutex_cnt == 0 &&
F_ISSET(env, ENV_PRIVATE | ENV_THREAD) != ENV_PRIVATE)
- dbenv->mutex_cnt =
- __lock_region_mutex_count(env) +
- __log_region_mutex_count(env) +
- __memp_region_mutex_count(env) +
- __txn_region_mutex_count(env);
+ dbenv->mutex_cnt = mutex_needed;
if (dbenv->mutex_max != 0 && dbenv->mutex_cnt > dbenv->mutex_max)
dbenv->mutex_cnt = dbenv->mutex_max;
/* Create/initialize the mutex manager structure. */
@@ -88,12 +89,12 @@
mtxmgr->reginfo.id = INVALID_REGION_ID;
mtxmgr->reginfo.flags = REGION_JOIN_OK;
size = __mutex_region_size(env);
if (create_ok)
F_SET(&mtxmgr->reginfo, REGION_CREATE_OK);
- if ((ret = __env_region_attach(env,
- &mtxmgr->reginfo, size, size + __mutex_region_max(env))) != 0)
+ if ((ret = __env_region_attach(env, &mtxmgr->reginfo,
+ size, size + __mutex_region_max(env, mutex_needed))) != 0)
goto err;
/* If we created the region, initialize it. */
if (F_ISSET(&mtxmgr->reginfo, REGION_CREATE))
if ((ret = __mutex_region_init(env, mtxmgr)) != 0)
@@ -350,44 +351,62 @@
dbenv = env->dbenv;
s = sizeof(DB_MUTEXMGR) + 1024;
- /* We discard one mutex for the OOB slot. */
+ /*
+ * We discard one mutex for the OOB slot. Make sure mutex_cnt doesn't
+ * overflow.
+ */
s += __env_alloc_size(
- (dbenv->mutex_cnt + 1) *__mutex_align_size(env));
+ (dbenv->mutex_cnt + (dbenv->mutex_cnt == UINT32_MAX ? 0 : 1)) *
+ __mutex_align_size(env));
return (s);
}
/*
* __mutex_region_max --
* Return the amount of space needed to reach the maximum size.
*/
static size_t
-__mutex_region_max(env)
+__mutex_region_max(env, mutex_needed)
ENV *env;
+ u_int32_t mutex_needed;
{
DB_ENV *dbenv;
- u_int32_t max;
+ u_int32_t max, mutex_cnt;
dbenv = env->dbenv;
+ mutex_cnt = dbenv->mutex_cnt;
- if ((max = dbenv->mutex_max) == 0) {
+ /*
+ * We want to limit the region size to accommodate at most UINT32_MAX
+ * mutexes. If mutex_cnt is UINT32_MAX, no more space is allowed.
+ */
+ if ((max = dbenv->mutex_max) == 0 && mutex_cnt != UINT32_MAX)
if (F_ISSET(env, ENV_PRIVATE | ENV_THREAD) == ENV_PRIVATE)
- max = dbenv->mutex_inc + 1;
- else
+ if (dbenv->mutex_inc + 1 < UINT32_MAX - mutex_cnt)
+ max = dbenv->mutex_inc + 1 + mutex_cnt;
+ else
+ max = UINT32_MAX;
+ else {
max = __lock_region_mutex_max(env) +
__txn_region_mutex_max(env) +
__log_region_mutex_max(env) +
dbenv->mutex_inc + 100;
- } else if (max <= dbenv->mutex_cnt)
+ if (max < UINT32_MAX - mutex_needed)
+ max += mutex_needed;
+ else
+ max = UINT32_MAX;
+ }
+
+ if (max <= mutex_cnt)
return (0);
else
- max -= dbenv->mutex_cnt;
-
- return ( __env_alloc_size(max * __mutex_align_size(env)));
+ return (__env_alloc_size(
+ (max - mutex_cnt) * __mutex_align_size(env)));
}
#ifdef HAVE_MUTEX_SYSTEM_RESOURCES
/*
* __mutex_resource_return

View File

@ -0,0 +1,20 @@
--- db-5.3.28/lang/sql/sqlite/tool/lemon.c.lemon_hash 2013-09-09 17:35:07.000000000 +0200
+++ db-5.3.28/lang/sql/sqlite/tool/lemon.c 2017-02-22 13:12:08.564106051 +0100
@@ -3428,7 +3428,7 @@
int maxdtlength; /* Maximum length of any ".datatype" field. */
char *stddt; /* Standardized name for a datatype */
int i,j; /* Loop counters */
- int hash; /* For hashing the name of a type */
+ unsigned hash; /* For hashing the name of a type */
const char *name; /* Name of the parser */
/* Allocate and initialize types[] and allocate stddt[] */
@@ -3491,7 +3491,7 @@
break;
}
hash++;
- if( hash>=arraysize ) hash = 0;
+ if( hash>=(unsigned)arraysize ) hash = 0;
}
if( types[hash]==0 ){
sp->dtnum = hash + 1;

View File

@ -0,0 +1,19 @@
Author: Filip Januš <fjanus@redhat.com>
Date: 6 Sep 2021
Related: https://bugzilla.redhat.com/show_bug.cgi?id=1992402
Patch was created based on the discussion in the previous link
diff -ur db-5.3.28/src/os/os_map.c db_patch/src/os/os_map.c
--- db-5.3.28/src/os/os_map.c 2013-09-09 17:35:09.000000000 +0200
+++ db_patch/src/os/os_map.c 2021-09-09 07:33:12.027328265 +0200
@@ -213,7 +213,10 @@
if (rp->max < rp->size)
rp->max = rp->size;
if (ret == 0 && F_ISSET(infop, REGION_CREATE)) {
- if (F_ISSET(dbenv, DB_ENV_REGION_INIT))
+
+ rp->size = rp->max;
+
+ if (F_ISSET(dbenv, DB_ENV_REGION_INIT))
ret = __db_file_write(env, infop->fhp,
rp->size / MEGABYTE, rp->size % MEGABYTE, 0x00);
else

View File

@ -0,0 +1,694 @@
--- db-18.1.32/src/btree/bt_cursor.c 2019-02-20 03:21:20.000000000 +0530
+++ db-18.1.40/src/btree/bt_cursor.c 2020-05-29 23:28:22.000000000 +0530
@@ -282,6 +282,8 @@
*
* Recno uses the btree bt_ovflsize value -- it's close enough.
*/
+ if (t->bt_minkey == 0)
+ return (DB_RECOVER);
cp->ovflsize = B_MINKEY_TO_OVFLSIZE(
dbp, F_ISSET(dbc, DBC_OPD) ? 2 : t->bt_minkey, dbp->pgsize);
--- db-18.1.32/src/btree/bt_verify.c 2019-02-20 03:21:20.000000000 +0530
+++ db-18.1.40/src/btree/bt_verify.c 2020-05-29 23:28:22.000000000 +0530
@@ -700,7 +700,11 @@
isbad = 1;
goto err;
default:
+ if (ret == 0) {
+ isbad = 1;
+ ret = DB_VERIFY_FATAL;
+ goto err;
+ }
- DB_ASSERT(env, ret != 0);
break;
}
@@ -1074,7 +1078,7 @@
DBT dbta, dbtb, dup_1, dup_2, *p1, *p2, *tmp;
ENV *env;
PAGE *child;
+ db_pgno_t cpgno, grandparent;
- db_pgno_t cpgno;
VRFY_PAGEINFO *pip;
db_indx_t i, *inp;
int adj, cmp, freedup_1, freedup_2, isbad, ret, t_ret;
@@ -1106,7 +1110,8 @@
buf1 = buf2 = NULL;
+ if (LF_ISSET(DB_NOORDERCHK))
+ return (EINVAL);
- DB_ASSERT(env, !LF_ISSET(DB_NOORDERCHK));
dupfunc = (dbp->dup_compare == NULL) ? __bam_defcmp : dbp->dup_compare;
if (TYPE(h) == P_LDUP)
@@ -1115,6 +1120,7 @@
func = __bam_defcmp;
if (dbp->bt_internal != NULL) {
bt = (BTREE *)dbp->bt_internal;
+ grandparent = bt->bt_root;
if (TYPE(h) == P_IBTREE && (bt->bt_compare != NULL ||
dupfunc != __bam_defcmp)) {
/*
@@ -974,8 +980,24 @@
*/
mpf = dbp->mpf;
child = h;
+ cpgno = pgno;
while (TYPE(child) == P_IBTREE) {
+ if (NUM_ENT(child) == 0) {
+ EPRINT((env, DB_STR_A("1088",
+ "Page %lu: internal page is empty and should not be",
+ "%lu"), (u_long)cpgno));
+ ret = DB_VERIFY_BAD;
+ goto err;
+ }
bi = GET_BINTERNAL(dbp, child, 0);
+ if (grandparent == bi->pgno) {
+ EPRINT((env, DB_STR_A("5552",
+ "Page %lu: found twice in the btree",
+ "%lu"), (u_long)grandparent));
+ ret = DB_VERIFY_FATAL;
+ goto err;
+ } else
+ grandparent = cpgno;
cpgno = bi->pgno;
if (child != h &&
(ret = __memp_fput(mpf,
@@ -1402,7 +1416,10 @@
*/
if (dup_1.data == NULL ||
dup_2.data == NULL) {
+ if (ovflok) {
+ isbad = 1;
+ goto err;
+ }
- DB_ASSERT(env, !ovflok);
if (pip != NULL)
F_SET(pip,
VRFY_INCOMPLETE);
@@ -1747,9 +1764,10 @@
(ret = __db_vrfy_ovfl_structure(dbp, vdp,
child->pgno, child->tlen,
flags | DB_ST_OVFL_LEAF)) != 0) {
+ if (ret == DB_VERIFY_BAD) {
- if (ret == DB_VERIFY_BAD)
isbad = 1;
+ break;
+ } else
- else
goto done;
}
@@ -1823,9 +1841,10 @@
stflags | DB_ST_TOPLEVEL,
NULL, NULL, NULL)) != 0) {
if (ret ==
+ DB_VERIFY_BAD) {
- DB_VERIFY_BAD)
isbad = 1;
+ break;
+ } else
- else
goto err;
}
}
@@ -1969,7 +1988,10 @@
*/
/* Otherwise, __db_vrfy_childput would be broken. */
+ if (child->refcnt < 1) {
+ isbad = 1;
+ goto err;
+ }
- DB_ASSERT(env, child->refcnt >= 1);
/*
* An overflow referenced more than twice here
@@ -1986,9 +2008,10 @@
if ((ret = __db_vrfy_ovfl_structure(dbp,
vdp, child->pgno, child->tlen,
flags)) != 0) {
+ if (ret == DB_VERIFY_BAD) {
- if (ret == DB_VERIFY_BAD)
isbad = 1;
+ break;
+ } else
- else
goto done;
}
}
@@ -2026,9 +2049,10 @@
if ((ret = __bam_vrfy_subtree(dbp, vdp, li->pgno,
i == 0 ? NULL : li, ri, flags, &child_level,
&child_nrecs, NULL)) != 0) {
+ if (ret == DB_VERIFY_BAD) {
- if (ret == DB_VERIFY_BAD)
isbad = 1;
+ break;
+ } else
- else
goto done;
}
@@ -2929,7 +2953,11 @@
db_pgno_t current, p;
int err_ret, ret;
+ if (pgset == NULL) {
+ EPRINT((dbp->env, DB_STR("5542",
+ "Error, database contains no visible pages.")));
+ return (DB_RUNRECOVERY);
+ }
- DB_ASSERT(dbp->env, pgset != NULL);
mpf = dbp->mpf;
h = NULL;
--- db-18.1.32/src/db/db_conv.c 2019-02-20 03:21:20.000000000 +0530
+++ db-18.1.40/src/db/db_conv.c 2020-05-29 23:28:22.000000000 +0530
@@ -493,8 +493,11 @@
db_indx_t i, *inp, len, tmp;
u_int8_t *end, *p, *pgend;
- if (pagesize == 0)
- return (0);
+ /* This function is also used to byteswap logs, so
+ * the pagesize might not be an actual page size.
+ */
+ if (!(pagesize >= 24 && pagesize <= DB_MAX_PGSIZE))
+ return (EINVAL);
if (pgin) {
M_32_SWAP(h->lsn.file);
@@ -513,26 +516,41 @@
pgend = (u_int8_t *)h + pagesize;
inp = P_INP(dbp, h);
- if ((u_int8_t *)inp >= pgend)
- goto out;
+ if ((u_int8_t *)inp > pgend)
+ return (__db_pgfmt(env, pg));
switch (TYPE(h)) {
case P_HASH_UNSORTED:
case P_HASH:
for (i = 0; i < NUM_ENT(h); i++) {
+ if ((u_int8_t*)(inp + i) >= pgend)
+ return (__db_pgfmt(env, pg));
+ if (inp[i] == 0)
+ continue;
if (pgin)
M_16_SWAP(inp[i]);
+ if (inp[i] >= pagesize)
+ return (__db_pgfmt(env, pg));
- if (P_ENTRY(dbp, h, i) >= pgend)
- continue;
+ if (P_ENTRY(dbp, h, i) >= pgend)
+ return (__db_pgfmt(env, pg));
switch (HPAGE_TYPE(dbp, h, i)) {
case H_KEYDATA:
break;
case H_DUPLICATE:
+ if (LEN_HITEM(dbp, h, pagesize, i) <
+ HKEYDATA_SIZE(0))
+ return (__db_pgfmt(env, pg));
+
len = LEN_HKEYDATA(dbp, h, pagesize, i);
p = HKEYDATA_DATA(P_ENTRY(dbp, h, i));
- for (end = p + len; p < end;) {
+
+ end = p + len;
+ if (end > pgend)
+ return (__db_pgfmt(env, pg));
+
+ while (p < end) {
if (pgin) {
P_16_SWAP(p);
memcpy(&tmp,
@@ -544,14 +562,20 @@
SWAP16(p);
}
p += tmp;
+ if (p >= end)
+ return (__db_pgfmt(env, pg));
SWAP16(p);
}
break;
case H_OFFDUP:
+ if ((inp[i] + HOFFDUP_SIZE) > pagesize)
+ return (__db_pgfmt(env, pg));
p = HOFFPAGE_PGNO(P_ENTRY(dbp, h, i));
SWAP32(p); /* pgno */
break;
case H_OFFPAGE:
+ if ((inp[i] + HOFFPAGE_SIZE) > pagesize)
+ return (__db_pgfmt(env, pg));
p = HOFFPAGE_PGNO(P_ENTRY(dbp, h, i));
SWAP32(p); /* pgno */
SWAP32(p); /* tlen */
@@ -559,7 +583,6 @@
default:
return (__db_pgfmt(env, pg));
}
-
}
/*
@@ -576,8 +599,12 @@
case P_LDUP:
case P_LRECNO:
for (i = 0; i < NUM_ENT(h); i++) {
+ if ((u_int8_t *)(inp + i) >= pgend)
+ return (__db_pgfmt(env, pg));
if (pgin)
M_16_SWAP(inp[i]);
+ if (inp[i] >= pagesize)
+ return (__db_pgfmt(env, pg));
/*
* In the case of on-page duplicates, key information
@@ -597,7 +624,7 @@
bk = GET_BKEYDATA(dbp, h, i);
if ((u_int8_t *)bk >= pgend)
- continue;
+ return (__db_pgfmt(env, pg));
switch (B_TYPE(bk->type)) {
case B_KEYDATA:
M_16_SWAP(bk->len);
@@ -605,6 +632,8 @@
case B_DUPLICATE:
case B_OVERFLOW:
bo = (BOVERFLOW *)bk;
+ if (((u_int8_t *)bo + BOVERFLOW_SIZE) > pgend)
+ return (__db_pgfmt(env, pg));
M_32_SWAP(bo->pgno);
M_32_SWAP(bo->tlen);
break;
@@ -618,12 +647,17 @@
break;
case P_IBTREE:
for (i = 0; i < NUM_ENT(h); i++) {
+ if ((u_int8_t *)(inp + i) > pgend)
+ return (__db_pgfmt(env, pg));
if (pgin)
M_16_SWAP(inp[i]);
+ if ((u_int16_t)(inp[i] +
+ BINTERNAL_SIZE(0) - 1) > pagesize)
+ break;
bi = GET_BINTERNAL(dbp, h, i);
- if ((u_int8_t *)bi >= pgend)
- continue;
+ if (((u_int8_t *)bi + BINTERNAL_SIZE(0)) > pgend)
+ return (__db_pgfmt(env, pg));
M_16_SWAP(bi->len);
M_32_SWAP(bi->pgno);
@@ -634,6 +668,10 @@
break;
case B_DUPLICATE:
case B_OVERFLOW:
+ if ((u_int16_t)(inp[i] +
+ BINTERNAL_SIZE(BOVERFLOW_SIZE) - 1) >
+ pagesize)
+ goto out;
bo = (BOVERFLOW *)bi->data;
M_32_SWAP(bo->pgno);
M_32_SWAP(bo->tlen);
@@ -648,12 +686,16 @@
break;
case P_IRECNO:
for (i = 0; i < NUM_ENT(h); i++) {
+ if ((u_int8_t *)(inp + i) >= pgend)
+ return (__db_pgfmt(env, pg));
if (pgin)
M_16_SWAP(inp[i]);
+ if (inp[i] >= pagesize)
+ return (__db_pgfmt(env, pg));
ri = GET_RINTERNAL(dbp, h, i);
- if ((u_int8_t *)ri >= pgend)
- continue;
+ if ((((u_int8_t *)ri) + RINTERNAL_SIZE) > pgend)
+ return (__db_pgfmt(env, pg));
M_32_SWAP(ri->pgno);
M_32_SWAP(ri->nrecs);
--- db-18.1.32/src/db/db_vrfy.c 2019-02-20 03:21:20.000000000 +0530
+++ db-18.1.40/src/db/db_vrfy.c 2020-05-29 23:28:22.000000000 +0530
@@ -381,8 +381,10 @@
vdp, name, 0, lp, rp, flags)) != 0) {
if (t_ret == DB_VERIFY_BAD)
isbad = 1;
+ else {
+ ret = t_ret;
+ goto err;
+ }
- else
- goto err;
}
/*
@@ -771,9 +773,10 @@
*/
if ((t_ret = __memp_fget(mpf, &i,
vdp->thread_info, NULL, 0, &h)) != 0) {
+ if ((dbp->type == DB_HASH ||
- if (dbp->type == DB_HASH ||
(dbp->type == DB_QUEUE &&
+ F_ISSET(dbp, DB_AM_INMEM))) &&
+ t_ret != DB_RUNRECOVERY) {
- F_ISSET(dbp, DB_AM_INMEM))) {
if ((t_ret =
__db_vrfy_getpageinfo(vdp, i, &pip)) != 0)
goto err1;
@@ -945,6 +948,8 @@
return (ret == 0 ? t_ret : ret);
}
+ if (ret == DB_PAGE_NOTFOUND && isbad == 1)
+ ret = 0;
return ((isbad == 1 && ret == 0) ? DB_VERIFY_BAD : ret);
}
@@ -1581,7 +1586,7 @@
if (pgno == PGNO_BASE_MD &&
dbtype != DB_QUEUE && meta->last_pgno != vdp->last_pgno) {
#ifdef HAVE_FTRUNCATE
+ ret = DB_VERIFY_FATAL;
- isbad = 1;
EPRINT((env, DB_STR_A("0552",
"Page %lu: last_pgno is not correct: %lu != %lu",
"%lu %lu %lu"), (u_long)pgno,
@@ -1622,7 +1627,11 @@
env = dbp->env;
pgset = vdp->pgset;
+ if (pgset == NULL) {
+ EPRINT((env, DB_STR("5543",
+ "Error, database contains no visible pages.")));
+ return (DB_RUNRECOVERY);
+ }
- DB_ASSERT(env, pgset != NULL);
if ((ret = __db_vrfy_getpageinfo(vdp, meta, &pip)) != 0)
return (ret);
@@ -2014,7 +2023,8 @@
int keyflag, ret, t_ret;
env = dbp->env;
+ if (!LF_ISSET(DB_SALVAGE))
+ return (EINVAL);
- DB_ASSERT(env, LF_ISSET(DB_SALVAGE));
/*
* !!!
@@ -2126,10 +2136,8 @@
int (*callback) __P((void *, const void *));
u_int32_t flags;
{
- ENV *env;
-
- env = dbp->env;
- DB_ASSERT(env, LF_ISSET(DB_SALVAGE));
+ if (!LF_ISSET(DB_SALVAGE))
+ return (EINVAL);
/* If we got this page in the subdb pass, we can safely skip it. */
if (__db_salvage_isdone(vdp, pgno))
@@ -2242,8 +2253,8 @@
ret = t_ret;
break;
case SALVAGE_OVERFLOW:
+ EPRINT((env, DB_STR("5544", "Invalid page type to salvage.")));
+ return (EINVAL);
- DB_ASSERT(env, 0); /* Shouldn't ever happen. */
- break;
case SALVAGE_HASH:
if ((t_ret = __ham_salvage(dbp, vdp,
pgno, h, handle, callback, flags)) != 0 && ret == 0)
@@ -2256,8 +2267,8 @@
* Shouldn't happen, but if it does, just do what the
* nice man says.
*/
+ EPRINT((env, DB_STR("5545", "Invalid page type to salvage.")));
+ return (EINVAL);
- DB_ASSERT(env, 0);
- break;
}
if ((t_ret = __memp_fput(mpf,
vdp->thread_info, h, dbp->priority)) != 0 && ret == 0)
@@ -2303,8 +2314,8 @@
ret = t_ret;
break;
default:
+ EPRINT((env, DB_STR("5546", "Invalid page type to salvage.")));
+ return (EINVAL);
- DB_ASSERT(env, 0); /* Shouldn't ever happen. */
- break;
}
if ((t_ret = __memp_fput(mpf,
vdp->thread_info, h, dbp->priority)) != 0 && ret == 0)
@@ -2361,7 +2372,10 @@
env = dbp->env;
+ if (himarkp == NULL) {
+ __db_msg(env, "Page %lu index has no end.", (u_long)pgno);
+ return (DB_VERIFY_FATAL);
+ }
- DB_ASSERT(env, himarkp != NULL);
inp = P_INP(dbp, h);
/*
@@ -2783,7 +2797,11 @@
goto err;
ovfl_bufsz = bkkey->len + 1;
}
+ if (subdbname == NULL) {
+ EPRINT((env, DB_STR("5547", "Subdatabase cannot be null.")));
+ ret = EINVAL;
+ goto err;
+ }
- DB_ASSERT(env, subdbname != NULL);
memcpy(subdbname, bkkey->data, bkkey->len);
subdbname[bkkey->len] = '\0';
}
--- db-18.1.32/src/db/db_vrfyutil.c 2019-02-20 03:21:20.000000000 +0530
+++ db-18.1.40/src/db/db_vrfyutil.c 2020-05-29 23:28:22.000000000 +0530
@@ -214,7 +214,8 @@
if ((ret = __db_get(pgdbp,
vdp->thread_info, vdp->txn, &key, &data, 0)) == 0) {
/* Found it. */
+ if (data.size != sizeof(VRFY_PAGEINFO))
+ return (DB_VERIFY_FATAL);
- DB_ASSERT(env, data.size == sizeof(VRFY_PAGEINFO));
pip = data.data;
LIST_INSERT_HEAD(&vdp->activepips, pip, links);
goto found;
@@ -342,7 +343,8 @@
F_SET(&data, DB_DBT_USERMEM);
if ((ret = __db_get(dbp, ip, txn, &key, &data, 0)) == 0) {
+ if (data.size != sizeof(int))
+ return (EINVAL);
- DB_ASSERT(dbp->env, data.size == sizeof(int));
} else if (ret == DB_NOTFOUND)
val = 0;
else
@@ -382,7 +384,8 @@
F_SET(&data, DB_DBT_USERMEM);
if ((ret = __db_get(dbp, ip, txn, &key, &data, 0)) == 0) {
+ if (data.size != sizeof(int))
+ return (DB_VERIFY_FATAL);
- DB_ASSERT(dbp->env, data.size == sizeof(int));
} else if (ret != DB_NOTFOUND)
return (ret);
@@ -419,7 +422,8 @@
if ((ret = __dbc_get(dbc, &key, &data, DB_NEXT)) != 0)
return (ret);
+ if (key.size != sizeof(db_pgno_t))
+ return (DB_VERIFY_FATAL);
- DB_ASSERT(dbc->env, key.size == sizeof(db_pgno_t));
*pgnop = pgno;
return (0);
@@ -566,7 +570,8 @@
if ((ret = __dbc_get(dbc, &key, &data, DB_SET)) != 0)
return (ret);
+ if (data.size != sizeof(VRFY_CHILDINFO))
+ return (DB_VERIFY_FATAL);
- DB_ASSERT(dbc->env, data.size == sizeof(VRFY_CHILDINFO));
*cipp = (VRFY_CHILDINFO *)data.data;
return (0);
@@ -594,7 +599,8 @@
if ((ret = __dbc_get(dbc, &key, &data, DB_NEXT_DUP)) != 0)
return (ret);
+ if (data.size != sizeof(VRFY_CHILDINFO))
+ return (DB_VERIFY_FATAL);
- DB_ASSERT(dbc->env, data.size == sizeof(VRFY_CHILDINFO));
*cipp = (VRFY_CHILDINFO *)data.data;
return (0);
@@ -721,7 +727,8 @@
return (ret);
while ((ret = __dbc_get(*dbcp, &key, &data, DB_NEXT)) == 0) {
+ if (data.size != sizeof(u_int32_t))
+ return (DB_VERIFY_FATAL);
- DB_ASSERT(dbp->env, data.size == sizeof(u_int32_t));
memcpy(&pgtype, data.data, sizeof(pgtype));
if (skip_overflow && pgtype == SALVAGE_OVERFLOW)
@@ -730,8 +737,9 @@
if ((ret = __dbc_del(*dbcp, 0)) != 0)
return (ret);
if (pgtype != SALVAGE_IGNORE) {
+ if (key.size != sizeof(db_pgno_t)
+ || data.size != sizeof(u_int32_t))
+ return (DB_VERIFY_FATAL);
- DB_ASSERT(dbp->env, key.size == sizeof(db_pgno_t));
- DB_ASSERT(dbp->env, data.size == sizeof(u_int32_t));
*pgnop = *(db_pgno_t *)key.data;
*pgtypep = *(u_int32_t *)data.data;
--- db-18.1.32/src/db/partition.c 2019-02-20 03:21:20.000000000 +0530
+++ db-18.1.40/src/db/partition.c 2020-05-29 23:28:22.000000000 +0530
@@ -461,9 +461,19 @@
} else
part->nparts = meta->nparts;
} else if (meta->nparts != 0 && part->nparts != meta->nparts) {
+ ret = EINVAL;
__db_errx(env, DB_STR("0656",
"Number of partitions does not match."));
- ret = EINVAL;
+ goto err;
+ }
+ /*
+ * There is no limit on the number of partitions, but I cannot imagine a real
+ * database having more than 10000.
+ */
+ if (meta->nparts > 10000) {
+ ret = EINVAL;
+ __db_errx(env, DB_STR_A("5553",
+ "Too many partitions %lu", "%lu"), (u_long)(meta->nparts));
goto err;
}
@@ -2106,10 +2116,13 @@
memcpy(rp->data, key->data, key->size);
B_TSET(rp->type, B_KEYDATA);
}
+vrfy: if ((t_ret = __db_verify(*pdbp, ip, (*pdbp)->fname,
+ NULL, handle, callback,
+ lp, rp, flags | DB_VERIFY_PARTITION)) != 0 && ret == 0) {
+ ret = t_ret;
+ if (ret == ENOENT)
+ break;
+ }
-vrfy: if ((t_ret = __db_verify(*pdbp, ip, (*pdbp)->fname,
- NULL, handle, callback,
- lp, rp, flags | DB_VERIFY_PARTITION)) != 0 && ret == 0)
- ret = t_ret;
}
err: if (lp != NULL)
--- db-18.1.32/src/hash/hash_page.c 2019-02-20 03:21:20.000000000 +0530
+++ db-18.1.40/src/hash/hash_page.c 2020-05-29 23:28:22.000000000 +0530
@@ -869,7 +869,11 @@
/* Validate that next, prev pointers are OK */
n = NUM_ENT(p);
dbp = dbc->dbp;
+ if (n % 2 != 0) {
+ __db_errx(dbp->env, DB_STR_A("5549",
+ "Odd number of entries on page: %lu", "%lu"), (u_long)(p->pgno));
+ return (DB_VERIFY_FATAL);
+ }
- DB_ASSERT(dbp->env, n%2 == 0 );
env = dbp->env;
t = dbp->h_internal;
@@ -940,7 +944,12 @@
if ((ret = __db_prpage(dbp, p, DB_PR_PAGE)) != 0)
return (ret);
#endif
+ if (res >= 0) {
+ __db_errx(env, DB_STR_A("5550",
+ "Odd number of entries on page: %lu", "%lu"),
+ (u_long)p->pgno);
+ return (DB_VERIFY_FATAL);
+ }
- DB_ASSERT(dbp->env, res < 0);
}
prev = curr;
--- db-18.1.32/src/hash/hash_verify.c 2019-02-20 03:21:20.000000000 +0530
+++ db-18.1.40/src/hash/hash_verify.c 2020-05-29 23:28:22.000000000 +0530
@@ -615,7 +615,7 @@
isbad = 1;
else
goto err;
+ }
- }
/*
* There may be unused hash pages corresponding to buckets
@@ -746,7 +746,7 @@
"Page %lu: impossible first page in bucket %lu", "%lu %lu"),
(u_long)pgno, (u_long)bucket));
/* Unsafe to continue. */
+ ret = DB_VERIFY_FATAL;
- isbad = 1;
goto err;
}
@@ -776,7 +776,7 @@
EPRINT((env, DB_STR_A("1116",
"Page %lu: hash page referenced twice", "%lu"),
(u_long)pgno));
+ ret = DB_VERIFY_FATAL;
- isbad = 1;
/* Unsafe to continue. */
goto err;
} else if ((ret = __db_vrfy_pgset_inc(vdp->pgset,
@@ -1307,7 +1307,11 @@
COMPQUIET(flags, 0);
ip = vdp->thread_info;
+ if (pgset == NULL) {
+ EPRINT((dbp->env, DB_STR("5548",
+ "Error, database contains no visible pages.")));
+ return (DB_VERIFY_FATAL);
+ }
- DB_ASSERT(dbp->env, pgset != NULL);
mpf = dbp->mpf;
totpgs = 0;
--- db-18.1.32/src/qam/qam_verify.c 2019-02-20 03:21:20.000000000 +0530
+++ db-18.1.40/src/qam/qam_verify.c 2020-05-29 23:28:22.000000000 +0530
@@ -465,7 +465,14 @@
/* Verify/salvage each page. */
if ((ret = __db_cursor(dbp, vdp->thread_info, NULL, &dbc, 0)) != 0)
return (ret);
-begin: for (; i <= stop; i++) {
+begin: if ((stop - i) > 100000) {
+ EPRINT((env, DB_STR_A("5551",
+"Warning, many possible extends files (%lu), will take a long time to verify",
+ "%lu"), (u_long)(stop - i)));
+ }
+ for (; i <= stop; i++) {
+ if (i == UINT32_MAX)
+ break;
/*
* If DB_SALVAGE is set, we inspect our database of completed
* pages, and skip any we've already printed in the subdb pass.

View File

@ -1,6 +1,6 @@
untrusted comment: verify with /etc/ports/core.pub
RWRJc1FUaeVeqiOgzSj9HQ0SmP0B7SWi9laNHdfNT9KR4DiWpYD9tA5eNvswZTHLmGXiE1kglAhYDNz2VtRcEeWHhxAyzai97go=
SHA256 (Pkgfile) = b10e6eab38a848a2b47dd623d5745b479b28aabcc7a154035c2420f7d223e7a7
RWRJc1FUaeVeqjhHAFlFb7PHe4qCcIg+oYN9xdN7RTrAPfCmxDp4SYbDqoPuOmnbt0Vz9V8EMxLrz2hEXfk2NhM3b/SDYOgAogQ=
SHA256 (Pkgfile) = 1cd358dad732d3856d06bcd3c8bd5773659ce6dbbb0335e72432fe9a33dda10e
SHA256 (.footprint) = e003004c0d164e3c82b062f16f30167565043c34aa58260fdf8d5771f14e4cc6
SHA256 (httpup-0.5.0.tar.xz) = c61db05e60895a6eb075df6651d20352917945c9e46b20957dbb276b501ca494
SHA256 (httpup-0.5.1.tar.xz) = 712bc16737eed67bbf74ea56e71dc74b94de5a7fd17a6de964eb65e649b8a20b
SHA256 (httpup) = b95756969ba3fe30a3bdb7addc34fdab26b4ea08ac8fddfd223fd28ac14c9af5

View File

@ -1,15 +1,15 @@
# Maintainer: CRUX System Team, core-ports at crux dot nu
# Description: One way sync over http
# URL: https://github.com/winkj/httpup
# Maintainer: CRUX System Team, core-ports at crux dot nu
# Depends on: curl
name=httpup
version=0.5.0
version=0.5.1
release=1
source=(https://crux.nu/files/$name-$version.tar.xz httpup)
build() {
export CPPFLAGS="-Wno-error=mismatched-new-delete"
#export CPPFLAGS="-Wno-error=mismatched-new-delete"
cd $name-$version
make
make DESTDIR=$PKG prefix=/usr mandir=/usr/share/man install

View File

@ -1,7 +1,7 @@
untrusted comment: verify with /etc/ports/core.pub
RWRJc1FUaeVeqhfJAFtT4I1Dn82BvUTqFJER/RO1RHLvBQESV5QcnsFErjFk1SYAOsGl0J9Kl17hM9ImR7rFu3FCd3iDMqZqdg0=
SHA256 (Pkgfile) = 49c9a82fd2444b7f5b675cb02d5caefcf249c41670a4fac9666973fa638ce55a
RWRJc1FUaeVeqhCUlMMy3oDkNkLMsgO6Arvk8mlu1aZ8vJprD9RY7tqkPnduVu/JQEYNOmFbgyq4aYN2rvOYIieIgE6gMvQwFQ0=
SHA256 (Pkgfile) = 74ccf2c2163ed8a58e59f7c3490d2dc2ea5671a4dc3f0cd2835040d6fa58caf6
SHA256 (.footprint) = 20bee9bdc0754167b76a54dd3f5b32a38ac4075bb7d0936188d78809f9056c8b
SHA256 (services) = cd0f204463056dbeb85a697a1e9f1cbfedf6af32a56f8d5868d5dd6bd4b938f7
SHA256 (protocols) = 64f2a2858a1f20db9314ea7ec6f75628c7edba2a605bf411a3d642d7c16037a1
SHA256 (services) = 4b2a68d0aeabaf2a08c2acf3fd8fa98bf2c614711296009dc4a30a7c6a258f39
SHA256 (protocols) = 02a7cd8a71982c87e042bcb58d19cdb1ad38d609c4fa29b1aa78f77fd7956e0b
SHA256 (update.sh) = c0177c49b9ac29c4f8d89d5f26ca4dc8b1ca358c4e71efca562e61f71f9f3df0

View File

@ -3,7 +3,7 @@
# Maintainer: CRUX System Team, core-ports at crux dot nu
name=iana-etc
version=20230405
version=20230606
release=1
source=(services protocols update.sh)

View File

@ -1,4 +1,4 @@
# /etc/protocols, created 2023-04-08T12:23:48+0200
# /etc/protocols, created 2023-09-15T17:43:50+0200
# Source: https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xml
hopopt 0 HOPOPT
icmp 1 ICMP
@ -134,4 +134,5 @@ wesp 141 WESP
rohc 142 ROHC
ethernet 143 Ethernet
aggfrag 144 AGGFRAG
nsh 145 NSH
reserved 255 Reserved

View File

@ -1,4 +1,4 @@
# /etc/services, created 2023-04-08T12:23:48+0200
# /etc/services, created 2023-09-15T17:43:50+0200
# Source: https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml
tcpmux 1/tcp
tcpmux 1/udp
@ -4070,6 +4070,8 @@ service-ctrl 2367/tcp
service-ctrl 2367/udp
opentable 2368/tcp
opentable 2368/udp
bif-p2p 2369/tcp
bif-p2p 2369/udp
l3-hbmon 2370/tcp
l3-hbmon 2370/udp
rda 2371/tcp
@ -9856,6 +9858,7 @@ senomix07 8058/udp
senomix08 8059/tcp
senomix08 8059/udp
aero 8060/udp
nikatron-dev 8061/tcp
toad-bi-appsrvr 8066/tcp
infi-async 8067/tcp
ucs-isc 8070/tcp
@ -10020,6 +10023,7 @@ pcsync-http 8444/tcp
pcsync-http 8444/udp
copy 8445/tcp
copy-disc 8445/udp
matrix-fed 8448/tcp
npmp 8450/tcp
npmp 8450/udp
nexentamv 8457/tcp
@ -10756,6 +10760,7 @@ dsmcc-download 13821/udp
dsmcc-ccp 13822/tcp
dsmcc-ccp 13822/udp
bmdss 13823/tcp
a-trust-rpc 13832/tcp
ucontrol 13894/tcp
ucontrol 13894/udp
dta-systems 13929/tcp

View File

@ -1,16 +1,6 @@
drwxr-xr-x root/root bin/
lrwxrwxrwx root/root bin/ip -> /sbin/ip
drwxr-xr-x root/root etc/
drwxr-xr-x root/root etc/iproute2/
-rw-r--r-- root/root etc/iproute2/bpf_pinning
-rw-r--r-- root/root etc/iproute2/ematch_map
-rw-r--r-- root/root etc/iproute2/group
-rw-r--r-- root/root etc/iproute2/nl_protos
-rw-r--r-- root/root etc/iproute2/rt_dsfield
-rw-r--r-- root/root etc/iproute2/rt_protos
-rw-r--r-- root/root etc/iproute2/rt_realms
-rw-r--r-- root/root etc/iproute2/rt_scopes
-rw-r--r-- root/root etc/iproute2/rt_tables
drwxr-xr-x root/root etc/rc.d/
-rwxr-xr-x root/root etc/rc.d/lo
-rwxr-xr-x root/root etc/rc.d/net
@ -39,6 +29,16 @@ drwxr-xr-x root/root usr/include/
drwxr-xr-x root/root usr/include/iproute2/
-rw-r--r-- root/root usr/include/iproute2/bpf_elf.h
drwxr-xr-x root/root usr/lib/
drwxr-xr-x root/root usr/lib/iproute2/
-rw-r--r-- root/root usr/lib/iproute2/bpf_pinning
-rw-r--r-- root/root usr/lib/iproute2/ematch_map
-rw-r--r-- root/root usr/lib/iproute2/group
-rw-r--r-- root/root usr/lib/iproute2/nl_protos
-rw-r--r-- root/root usr/lib/iproute2/rt_dsfield
-rw-r--r-- root/root usr/lib/iproute2/rt_protos
-rw-r--r-- root/root usr/lib/iproute2/rt_realms
-rw-r--r-- root/root usr/lib/iproute2/rt_scopes
-rw-r--r-- root/root usr/lib/iproute2/rt_tables
drwxr-xr-x root/root usr/lib/tc/
-rw-r--r-- root/root usr/lib/tc/experimental.dist
lrwxrwxrwx root/root usr/lib/tc/m_ipt.so -> m_xt.so
@ -67,6 +67,7 @@ drwxr-xr-x root/root usr/share/man/man8/
-rw-r--r-- root/root usr/share/man/man8/dcb-ets.8.gz
-rw-r--r-- root/root usr/share/man/man8/dcb-maxrate.8.gz
-rw-r--r-- root/root usr/share/man/man8/dcb-pfc.8.gz
-rw-r--r-- root/root usr/share/man/man8/dcb-rewr.8.gz
-rw-r--r-- root/root usr/share/man/man8/dcb.8.gz
-rw-r--r-- root/root usr/share/man/man8/devlink-dev.8.gz
-rw-r--r-- root/root usr/share/man/man8/devlink-dpipe.8.gz

View File

@ -1,7 +1,7 @@
untrusted comment: verify with /etc/ports/core.pub
RWRJc1FUaeVeqmwPQMoWegKDzklN+eUMXAavL3lj8FTuV0CZvDQs82Rj3AJvAmFW2krWZfRfUmZShoUT9Gkv7fd1SagRCb2EewI=
SHA256 (Pkgfile) = 10568a455f334b7bc0144ca9e2fe3198d9892a600bc4fffb9bb28fb5e4e6ac43
SHA256 (.footprint) = 736985f364c1e8cbd9ef6beee35e262ece896b3f3dd342ea6a605af96d02bfdc
SHA256 (iproute2-6.4.0.tar.xz) = 4c51b8decbc7e4da159ffb066f590cfb93dbf9af7ff86b1647ce42b7c179a272
RWRJc1FUaeVeqr6MuGd/GVoR2trIRZXdnqhPbigP7qeqsn84DqNXBG0m/kEYrHvAS8Rf7FD7cOz5gq26qAw7N0VcHLOY0Ix9pQQ=
SHA256 (Pkgfile) = c03fb799a406d5722a7989044a93277b76197077b96be8d3a7c867331ca6b8aa
SHA256 (.footprint) = 92f887cdfff7bd1ec918a202d573fb1d1c652f5b73c65d7bd2dcdf3ff19eb961
SHA256 (iproute2-6.5.0.tar.xz) = a70179085fa1b96d3c33b040c809b75e2b57563adc505a4ad05e2609df373463
SHA256 (lo.iproute2) = ce94fcf414aa11927a66a221af14180f125f4efbf985dd4db9a1b43dad9cbcc7
SHA256 (net.iproute2) = 0af62a6d674d159ec77ccb46c7ee189c1dc4db0213026d6c42c2b80ce01d231d

View File

@ -1,10 +1,10 @@
# Description: A collection of utilites for controlling TCP/IP networking and traffic in Linux
# URL: https://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2
# Maintainer: CRUX System Team, core-ports at crux dot nu
# Depends on: db elfutils iptables libcap libmnl
# Depends on: db elfutils iptables libcap
name=iproute2
version=6.4.0
version=6.5.0
release=1
source=(https://www.kernel.org/pub/linux/utils/net/$name/$name-$version.tar.xz
lo.iproute2 net.iproute2)

View File

@ -1,5 +1,5 @@
untrusted comment: verify with /etc/ports/core.pub
RWRJc1FUaeVeqtG5VYFGtihmfRva34t1DtUkAzjaY15VB2rPVyoNhUk2qlhlMOnptriU/2yAGbevpZKX+4I1+8tmdWaf+nc+/Ag=
SHA256 (Pkgfile) = 77f2c9deebaedc726bcc4ae00c730176778ff06ca37c600c97324e2111524e19
RWRJc1FUaeVeqnIg8nCNMqaG/8zkJ2N77prQ/AkmsLerTF5ZDBvLkr4x4RpAfyMxYtZ39007IgzbT+AI32/1KfotIlHaVLiSnQI=
SHA256 (Pkgfile) = a1189fba19cefd8123ee81346a5378ad6dc655770c9eb75f43c996ffa1ae5249
SHA256 (.footprint) = d29a69eb36c351c70aecd8daa017736c3849dad5a2445fe682a50540a787c042
SHA256 (libarchive-3.7.1.tar.xz) = b17403ce670ff18d8e06fea05a9ea9accf70678c88f1b9392a2e29b51127895f
SHA256 (libarchive-3.7.2.tar.xz) = 04357661e6717b6941682cde02ad741ae4819c67a260593dfb2431861b251acb

View File

@ -1,10 +1,10 @@
# Description: Library to create and read several archive formats
# URL: https://www.libarchive.org/
# Maintainer: CRUX System Team, core-ports at crux dot nu
# Depends on: acl bzip2 lzo xz zlib zstd
# Depends on: acl bzip2 lzo zstd
name=libarchive
version=3.7.1
version=3.7.2
release=1
source=(https://github.com/libarchive/libarchive/releases/download/v$version/$name-$version.tar.xz)

View File

@ -6,9 +6,9 @@ drwxr-xr-x root/root usr/include/editline/
drwxr-xr-x root/root usr/lib/
-rw-r--r-- root/root usr/lib/libedit.a
-rwxr-xr-x root/root usr/lib/libedit.la
lrwxrwxrwx root/root usr/lib/libedit.so -> libedit.so.0.0.70
lrwxrwxrwx root/root usr/lib/libedit.so.0 -> libedit.so.0.0.70
-rwxr-xr-x root/root usr/lib/libedit.so.0.0.70
lrwxrwxrwx root/root usr/lib/libedit.so -> libedit.so.0.0.72
lrwxrwxrwx root/root usr/lib/libedit.so.0 -> libedit.so.0.0.72
-rwxr-xr-x root/root usr/lib/libedit.so.0.0.72
drwxr-xr-x root/root usr/lib/pkgconfig/
-rw-r--r-- root/root usr/lib/pkgconfig/libedit.pc
drwxr-xr-x root/root usr/share/

View File

@ -1,5 +1,5 @@
untrusted comment: verify with /etc/ports/core.pub
RWRJc1FUaeVeqhf97m7pzEPQSpPDQKJ/pcbjHrAIP1QQKWiloitwKlMcy3BNYjEmMnG5Ec7xqyAf3BeCs/cQxDVtsR8e2LF4Wg8=
SHA256 (Pkgfile) = 5fac4b445b90a9a22d1eb17f07b6f280a40f98d940d59e1ae69d60d57e4f2676
SHA256 (.footprint) = 3a7fcfdfad4d223c8e942b715a5c7a831dfdd53f4a3ec49d173d37fd1e8ffcb7
SHA256 (libedit-20221030-3.1.tar.gz) = f0925a5adf4b1bf116ee19766b7daa766917aec198747943b1c4edf67a4be2bb
RWRJc1FUaeVeqqQ4P2kIOGhIRJGFZj8i47Nx6DvHMRKIusGD6RsDyP59ECsxM8A/st8ZDMszDCP3HQfPu1K2NdrPL1e6njaqdwg=
SHA256 (Pkgfile) = c2102bb097b9ae62516e7f9a3648bd7843fc13f525cb137a3f2fda9e28b9b79b
SHA256 (.footprint) = 78905c0993cbab266b6a6d16e4be6f16e9cd85ea34657bb225676e4326b9cf82
SHA256 (libedit-20230828-3.1.tar.gz) = 4ee8182b6e569290e7d1f44f0f78dac8716b35f656b76528f699c69c98814dad

View File

@ -3,7 +3,7 @@
# Maintainer: CRUX System Team, core-ports at crux dot nu
name=libedit
version=20221030_3.1
version=20230828_3.1
release=1
source=(https://thrysoee.dk/editline/$name-${version/_/-}.tar.gz)

View File

@ -6,8 +6,8 @@ drwxr-xr-x root/root usr/include/nghttp2/
drwxr-xr-x root/root usr/lib/
-rw-r--r-- root/root usr/lib/libnghttp2.a
-rwxr-xr-x root/root usr/lib/libnghttp2.la
lrwxrwxrwx root/root usr/lib/libnghttp2.so -> libnghttp2.so.14.24.3
lrwxrwxrwx root/root usr/lib/libnghttp2.so.14 -> libnghttp2.so.14.24.3
-rwxr-xr-x root/root usr/lib/libnghttp2.so.14.24.3
lrwxrwxrwx root/root usr/lib/libnghttp2.so -> libnghttp2.so.14.24.4
lrwxrwxrwx root/root usr/lib/libnghttp2.so.14 -> libnghttp2.so.14.24.4
-rwxr-xr-x root/root usr/lib/libnghttp2.so.14.24.4
drwxr-xr-x root/root usr/lib/pkgconfig/
-rw-r--r-- root/root usr/lib/pkgconfig/libnghttp2.pc

View File

@ -1,5 +1,5 @@
untrusted comment: verify with /etc/ports/core.pub
RWRJc1FUaeVeqhUNRRnyZ9aPHMkynJNS/yH6Hog3a5xj1mybcJ9hIRSF0xOkH4ryRBbzyG15OnXozklgAlTnp/KxNAgSrcot8go=
SHA256 (Pkgfile) = a1a4e3ebab20c6313362ca7f3d477faaae4b6b21c003e583dd8f29941b2011e3
SHA256 (.footprint) = 1d28b817055d759a81b8448f72b98aee2832c5301284d29fa5d6c36f6828ea65
SHA256 (nghttp2-1.55.1.tar.xz) = 19490b7c8c2ded1cf7c3e3a54ef4304e3a7876ae2d950d60a81d0dc6053be419
RWRJc1FUaeVeqmyXl056+JDoKO1fq/0em2aRYoW/wlkmNam575U7P2LGwj/OioMHDj0mX4E0kDq9VrYIR1mgMIVuBQ6Amu7eQg0=
SHA256 (Pkgfile) = cd5238b8f1712469a63573b3255e7e9a4430fe06767156cf4a9f6437d3733f54
SHA256 (.footprint) = 0388dea4fdad93060ea83f37602c9a3eeb4149c43f22f0edcb41395ce49383b8
SHA256 (nghttp2-1.56.0.tar.xz) = 65eee8021e9d3620589a4a4e91ce9983d802b5229f78f3313770e13f4d2720e9

View File

@ -3,7 +3,7 @@
# Maintainer: CRUX System Team, core-ports at crux dot nu
name=libnghttp2
version=1.55.1
version=1.56.0
release=1
source=(https://github.com/nghttp2/nghttp2/releases/download/v$version/nghttp2-$version.tar.xz)

View File

@ -1,7 +1,7 @@
untrusted comment: verify with /etc/ports/core.pub
RWRJc1FUaeVeqpEDKO0Xtx1TuLoRnDLJ5aTv++n3n8mEh1rqn3w0odswXFEKc9gnkh5ZI3twvreRZS8aWdvy4koFkFBuogiopgY=
SHA256 (Pkgfile) = 2eaa9107721f94a30484b87da2b4d9f234d45fbe112a358068827d1a555a755e
RWRJc1FUaeVeqmXK/GJovPfrVx4Y7Mi5ETM513AyjzqxYLCD/Vf2yDhff38EQupLt982RUlCWH3OFGsl9exdzpoATfldzGUOCgQ=
SHA256 (Pkgfile) = 0d74a895988e25573c41df0e70ea91c28f6b3159abeedc7bd18d5c832a84f065
SHA256 (.footprint) = f3bc795dc574418696dc219d19d75f55bcaa137837d18ddb6db00c233707006d
SHA256 (pkgconf-2.0.2.tar.xz) = ea5a25ef8f251eb5377ec0e21c75fb61894433cfbdbf0b2559ba33e4c2664401
SHA256 (pkgconf-2.0.3.tar.xz) = cabdf3c474529854f7ccce8573c5ac68ad34a7e621037535cbc3981f6b23836c
SHA256 (i686-pc-linux-gnu.personality) = 6697c6db7deaae269ea75624a70e80949241f2cf59a537f31ecfcac726d90bc1
SHA256 (x86_64-pc-linux-gnu.personality) = c8297817ba0b57d003878db247ff34b4c47a7594c9f67dcfe8ff8d6567956cd5

View File

@ -3,7 +3,7 @@
# Maintainer: CRUX System Team, core-ports at crux dot nu
name=pkgconf
version=2.0.2
version=2.0.3
release=1
source=(https://distfiles.ariadne.space/pkgconf/pkgconf-$version.tar.xz
i686-pc-linux-gnu.personality x86_64-pc-linux-gnu.personality)

View File

@ -4,8 +4,8 @@ drwxr-xr-x root/root bin/
drwxr-xr-x root/root etc/
-rw-r--r-- root/root etc/sysctl.conf
drwxr-xr-x root/root lib/
lrwxrwxrwx root/root lib/libproc2.so.0 -> libproc2.so.0.0.1
-rwxr-xr-x root/root lib/libproc2.so.0.0.1
lrwxrwxrwx root/root lib/libproc2.so.0 -> libproc2.so.0.0.2
-rwxr-xr-x root/root lib/libproc2.so.0.0.2
drwxr-xr-x root/root sbin/
-rwxr-xr-x root/root sbin/sysctl
drwxr-xr-x root/root usr/
@ -36,7 +36,7 @@ drwxr-xr-x root/root usr/include/libproc2/
drwxr-xr-x root/root usr/lib/
-rw-r--r-- root/root usr/lib/libproc2.a
-rwxr-xr-x root/root usr/lib/libproc2.la
lrwxrwxrwx root/root usr/lib/libproc2.so -> ../../lib/libproc2.so.0.0.1
lrwxrwxrwx root/root usr/lib/libproc2.so -> ../../lib/libproc2.so.0.0.2
drwxr-xr-x root/root usr/lib/pkgconfig/
-rw-r--r-- root/root usr/lib/pkgconfig/libproc2.pc
drwxr-xr-x root/root usr/share/

View File

@ -1,6 +1,6 @@
untrusted comment: verify with /etc/ports/core.pub
RWRJc1FUaeVeqowwmrvV/D9l5eX9DKARpt0Eo+AsW4i4CxbsbJzxCBq9Gjkho+/D5LXjM4o7yynuh4V47gVOLWLJRP+/BmaFrwk=
SHA256 (Pkgfile) = 9e2a6a83a4976475160fd36f9893b12935cdfeac63a8ee420d88a7c77a1a6c61
SHA256 (.footprint) = 83f334ed4ba63c343ed1eacb27f74377bb894411e6e9d65d251e78dac6272956
SHA256 (procps-ng-4.0.3.tar.xz) = 303c8ec4f96ae18d8eaef86c2bd0986938764a45dc505fe0a0af868c674dba92
RWRJc1FUaeVeqigAC0B/1ILVi9YXxn0C9iw9IA2UEU4rSdn60VRHqiEWb3ITqFdR0W+j94zm6Uk6X+ERnxdMWe2usIIDG1yL5Q8=
SHA256 (Pkgfile) = e825df80941cbecd8b5b1b39784e780739e8a1e92b7ad7fdc20b09b303e4edd1
SHA256 (.footprint) = 14d4d612a269426256790bbdb975807c5c1093b50e6cd5c88c244e25e08f5d3e
SHA256 (procps-ng-4.0.4.tar.xz) = 22870d6feb2478adb617ce4f09a787addaf2d260c5a8aa7b17d889a962c5e42e
SHA256 (sysctl.conf) = 27c68004a396334b972bbb99375088c3bbd65cfbed8abdfc8f0b77f45fd8e47f

View File

@ -4,7 +4,7 @@
# Depends on: ncurses
name=procps
version=4.0.3
version=4.0.4
release=1
source=(http://downloads.sourceforge.net/project/procps-ng/Production/$name-ng-$version.tar.xz
sysctl.conf)

View File

@ -158,18 +158,20 @@ drwxr-xr-x root/root usr/lib/python3.11/site-packages/pkg_resources/extern/
drwxr-xr-x root/root usr/lib/python3.11/site-packages/pkg_resources/extern/__pycache__/
-rw-r--r-- root/root usr/lib/python3.11/site-packages/pkg_resources/extern/__pycache__/__init__.cpython-311.opt-1.pyc
-rw-r--r-- root/root usr/lib/python3.11/site-packages/pkg_resources/extern/__pycache__/__init__.cpython-311.pyc
drwxr-xr-x root/root usr/lib/python3.11/site-packages/setuptools-68.1.2-py3.11.egg-info/
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools-68.1.2-py3.11.egg-info/PKG-INFO
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools-68.1.2-py3.11.egg-info/SOURCES.txt
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools-68.1.2-py3.11.egg-info/dependency_links.txt
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools-68.1.2-py3.11.egg-info/entry_points.txt
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools-68.1.2-py3.11.egg-info/requires.txt
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools-68.1.2-py3.11.egg-info/top_level.txt
drwxr-xr-x root/root usr/lib/python3.11/site-packages/setuptools-68.2.2-py3.11.egg-info/
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools-68.2.2-py3.11.egg-info/PKG-INFO
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools-68.2.2-py3.11.egg-info/SOURCES.txt
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools-68.2.2-py3.11.egg-info/dependency_links.txt
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools-68.2.2-py3.11.egg-info/entry_points.txt
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools-68.2.2-py3.11.egg-info/requires.txt
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools-68.2.2-py3.11.egg-info/top_level.txt
drwxr-xr-x root/root usr/lib/python3.11/site-packages/setuptools/
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools/__init__.py
drwxr-xr-x root/root usr/lib/python3.11/site-packages/setuptools/__pycache__/
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools/__pycache__/__init__.cpython-311.opt-1.pyc
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools/__pycache__/__init__.cpython-311.pyc
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools/__pycache__/_core_metadata.cpython-311.opt-1.pyc
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools/__pycache__/_core_metadata.cpython-311.pyc
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools/__pycache__/_entry_points.cpython-311.opt-1.pyc
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools/__pycache__/_entry_points.cpython-311.pyc
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools/__pycache__/_imp.cpython-311.opt-1.pyc
@ -230,6 +232,7 @@ drwxr-xr-x root/root usr/lib/python3.11/site-packages/setuptools/__pycache__/
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools/__pycache__/wheel.cpython-311.pyc
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools/__pycache__/windows_support.cpython-311.opt-1.pyc
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools/__pycache__/windows_support.cpython-311.pyc
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools/_core_metadata.py
drwxr-xr-x root/root usr/lib/python3.11/site-packages/setuptools/_distutils/
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools/_distutils/__init__.py
drwxr-xr-x root/root usr/lib/python3.11/site-packages/setuptools/_distutils/__pycache__/
@ -576,6 +579,8 @@ drwxr-xr-x root/root usr/lib/python3.11/site-packages/setuptools/command/
drwxr-xr-x root/root usr/lib/python3.11/site-packages/setuptools/command/__pycache__/
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools/command/__pycache__/__init__.cpython-311.opt-1.pyc
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools/command/__pycache__/__init__.cpython-311.pyc
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools/command/__pycache__/_requirestxt.cpython-311.opt-1.pyc
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools/command/__pycache__/_requirestxt.cpython-311.pyc
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools/command/__pycache__/alias.cpython-311.opt-1.pyc
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools/command/__pycache__/alias.cpython-311.pyc
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools/command/__pycache__/bdist_egg.cpython-311.opt-1.pyc
@ -624,6 +629,7 @@ drwxr-xr-x root/root usr/lib/python3.11/site-packages/setuptools/command/__pycac
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools/command/__pycache__/upload.cpython-311.pyc
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools/command/__pycache__/upload_docs.cpython-311.opt-1.pyc
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools/command/__pycache__/upload_docs.cpython-311.pyc
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools/command/_requirestxt.py
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools/command/alias.py
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools/command/bdist_egg.py
-rw-r--r-- root/root usr/lib/python3.11/site-packages/setuptools/command/bdist_rpm.py

View File

@ -1,5 +1,5 @@
untrusted comment: verify with /etc/ports/core.pub
RWRJc1FUaeVeqvlSeOcFtPHP1UNy+LDO4PHCLB7nW1RSVPJap9DB43rSPGKIjRZMaQmmeWZd5a/81iFNYNRtFXTP7GMZkbiGRgw=
SHA256 (Pkgfile) = 7ce9b562802aaaf68a9061e68cc4bf9d517f447e2f77d71580de63a6b3464f07
SHA256 (.footprint) = 9937583f470c877adf652685dca963ff0330ad6a05b758e7209fdcfd153b2ea0
SHA256 (setuptools-68.1.2.tar.gz) = 3d4dfa6d95f1b101d695a6160a7626e15583af71a5f52176efa5d39a054d475d
RWRJc1FUaeVeqoWeCI8TWEpV7XkzklbIErR7tN2ca3/jyvYXigKODdTpui+tbqw/KlppSVpZhw15/kHifBPYN8GaR4JVeTaD9wc=
SHA256 (Pkgfile) = d1356482a15da87ccff31d4199dacdd41ad284f939102df1b7006218c2cc47ea
SHA256 (.footprint) = 44f6e569ea7a86e5350b831830ce12847eed938fd4e5d206aec71d847f0e71f0
SHA256 (setuptools-68.2.2.tar.gz) = 4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87

View File

@ -1,10 +1,10 @@
# Description: Easily download, build, install, upgrade, and uninstall Python packages.
# Description: Easily download, build, install, upgrade, and uninstall Python packages
# URL: https://pypi.python.org/pypi/setuptools
# Maintainer: CRUX System Team, core-ports at crux dot nu
# Depends on: python3
name=python3-setuptools
version=68.1.2
version=68.2.2
release=1
source=(https://files.pythonhosted.org/packages/source/${name:8:1}/${name#*-}/${name#*-}-$version.tar.gz)

View File

@ -1,5 +1,5 @@
untrusted comment: verify with /etc/ports/core.pub
RWRJc1FUaeVeqrNN0GQel2l8ozdVc62KQaDLCBXJuzrTAw03GEOhzzIn6gUgn5G1Z/ILygju/Glvqlkm1sOH6DRpAoniP7lCMwY=
SHA256 (Pkgfile) = e09e46780091efe8e0ca323d95aa9eb03193d518fc05799393308beb5643415b
RWRJc1FUaeVeqq48q/z4Mq6/BW7Kv7aiMkQchAnN0iPgLb18JnSG4AgJDBVovExAiuaeMIJSODsjn+ucs02W2SZ9mkfD3yguIw0=
SHA256 (Pkgfile) = 8514a80908f49e65b036da369fbeff09b91c7f5ad3f130fb19cde87a1e836991
SHA256 (.footprint) = 54d29bd72af140bd285f65d0e72b3ef8eb4279298c98354632552b41db701253
SHA256 (sqlite-autoconf-3430000.tar.gz) = 49008dbf3afc04d4edc8ecfc34e4ead196973034293c997adad2f63f01762ae1
SHA256 (sqlite-autoconf-3430100.tar.gz) = 46db2f10f306e163e4571b8974d44cd37078aae04295bbf08b253655df3265f4

View File

@ -4,7 +4,7 @@
# Depends on: readline zlib
name=sqlite3
version=3.43.0
version=3.43.1
release=1
_version=$(printf "%i%.2i%.2i%.2i" ${version//./ })

View File

@ -1,8 +1,8 @@
untrusted comment: verify with /etc/ports/core.pub
RWRJc1FUaeVeqkfeiK3aNQfE2UaLrF3bzjEI1Dofh8Tvq4U5b9uTkbZWUDIAL0KcMYCZRQwsXxXpdvRoFXlv1ellqbobTpXyHQc=
SHA256 (Pkgfile) = f68360b156659820629401220f04a3999d497c38e08b755cc0f55e2f2b99ba26
RWRJc1FUaeVeqjNYi9YZelaXpXmRsbzP2i1G+lEKpT1b6XnrwxkMMPpU3KR8wEZb4bTblklcY0+xqJmr40UPQYPlu3158Br33go=
SHA256 (Pkgfile) = 358d7c28d4116e26cf89b59555eaa44a3e1cd04aa8cdf3de49a4a006afdb0a87
SHA256 (.footprint) = 40c1675d17a58b1815bc369b160d4a08f55eb7790d6ae09a137c8c223ea1bb4a
SHA256 (sysklogd-2.5.1.tar.gz) = 47a7ba220035c5b116c249dc271c7c007ec37ffd2b453404e38aabf467d16806
SHA256 (sysklogd-2.5.2.tar.gz) = 9da4444285772ce2bfc9c687be8f978b7a9fe7d3937347cd4938eda0c4545e05
SHA256 (rotatelog) = 4f51230e8c371d61018d88f6d88d1c6bf6b9aee054302fbf4285c82084bdc98f
SHA256 (syslog) = fc29247aaee9baec087d29a6ffef469d8301bddef913bb7eee67151fceba7112
SHA256 (syslog.conf) = b38189cac2b80dcd7d74d8759dddcdd57a203becdbece27253d6d2ba25be95c2

View File

@ -3,7 +3,7 @@
# Maintainer: CRUX System Team, core-ports at crux dot nu
name=sysklogd
version=2.5.1
version=2.5.2
release=1
source=(https://github.com/troglobit/sysklogd/releases/download/v$version/$name-$version.tar.gz \
rotatelog syslog syslog.conf sysklogd)

View File

@ -465,6 +465,7 @@ drwxr-xr-x root/root usr/share/vim/ftplugin/
-rw-r--r-- root/root usr/share/vim/ftplugin/fetchmail.vim
-rw-r--r-- root/root usr/share/vim/ftplugin/fish.vim
-rw-r--r-- root/root usr/share/vim/ftplugin/flexwiki.vim
-rw-r--r-- root/root usr/share/vim/ftplugin/forth.vim
-rw-r--r-- root/root usr/share/vim/ftplugin/fortran.vim
-rw-r--r-- root/root usr/share/vim/ftplugin/fpcmake.vim
-rw-r--r-- root/root usr/share/vim/ftplugin/framescript.vim
@ -593,6 +594,7 @@ drwxr-xr-x root/root usr/share/vim/ftplugin/
-rw-r--r-- root/root usr/share/vim/ftplugin/python.vim
-rw-r--r-- root/root usr/share/vim/ftplugin/qb64.vim
-rw-r--r-- root/root usr/share/vim/ftplugin/qf.vim
-rw-r--r-- root/root usr/share/vim/ftplugin/qml.vim
-rw-r--r-- root/root usr/share/vim/ftplugin/quake.vim
-rw-r--r-- root/root usr/share/vim/ftplugin/quarto.vim
-rw-r--r-- root/root usr/share/vim/ftplugin/r.vim
@ -630,6 +632,7 @@ drwxr-xr-x root/root usr/share/vim/ftplugin/
-rw-r--r-- root/root usr/share/vim/ftplugin/slpconf.vim
-rw-r--r-- root/root usr/share/vim/ftplugin/slpreg.vim
-rw-r--r-- root/root usr/share/vim/ftplugin/slpspi.vim
-rw-r--r-- root/root usr/share/vim/ftplugin/solidity.vim
-rw-r--r-- root/root usr/share/vim/ftplugin/solution.vim
-rw-r--r-- root/root usr/share/vim/ftplugin/spec.vim
-rw-r--r-- root/root usr/share/vim/ftplugin/sql.vim
@ -797,6 +800,7 @@ drwxr-xr-x root/root usr/share/vim/indent/
-rw-r--r-- root/root usr/share/vim/indent/pyrex.vim
-rw-r--r-- root/root usr/share/vim/indent/python.vim
-rw-r--r-- root/root usr/share/vim/indent/qb64.vim
-rw-r--r-- root/root usr/share/vim/indent/qml.vim
-rw-r--r-- root/root usr/share/vim/indent/quarto.vim
-rw-r--r-- root/root usr/share/vim/indent/r.vim
-rw-r--r-- root/root usr/share/vim/indent/racket.vim
@ -870,6 +874,28 @@ drwxr-xr-x root/root usr/share/vim/pack/dist/opt/dvorak/plugin/
drwxr-xr-x root/root usr/share/vim/pack/dist/opt/editexisting/
drwxr-xr-x root/root usr/share/vim/pack/dist/opt/editexisting/plugin/
-rw-r--r-- root/root usr/share/vim/pack/dist/opt/editexisting/plugin/editexisting.vim
drwxr-xr-x root/root usr/share/vim/pack/dist/opt/editorconfig/
-rw-r--r-- root/root usr/share/vim/pack/dist/opt/editorconfig/.editorconfig
-rw-r--r-- root/root usr/share/vim/pack/dist/opt/editorconfig/CONTRIBUTORS
-rw-r--r-- root/root usr/share/vim/pack/dist/opt/editorconfig/LICENSE
-rw-r--r-- root/root usr/share/vim/pack/dist/opt/editorconfig/LICENSE.PSF
-rw-r--r-- root/root usr/share/vim/pack/dist/opt/editorconfig/README.md
drwxr-xr-x root/root usr/share/vim/pack/dist/opt/editorconfig/autoload/
-rw-r--r-- root/root usr/share/vim/pack/dist/opt/editorconfig/autoload/editorconfig.vim
-rw-r--r-- root/root usr/share/vim/pack/dist/opt/editorconfig/autoload/editorconfig_core.vim
drwxr-xr-x root/root usr/share/vim/pack/dist/opt/editorconfig/autoload/editorconfig_core/
-rw-r--r-- root/root usr/share/vim/pack/dist/opt/editorconfig/autoload/editorconfig_core/fnmatch.vim
-rw-r--r-- root/root usr/share/vim/pack/dist/opt/editorconfig/autoload/editorconfig_core/handler.vim
-rw-r--r-- root/root usr/share/vim/pack/dist/opt/editorconfig/autoload/editorconfig_core/ini.vim
-rw-r--r-- root/root usr/share/vim/pack/dist/opt/editorconfig/autoload/editorconfig_core/util.vim
drwxr-xr-x root/root usr/share/vim/pack/dist/opt/editorconfig/doc/
-rw-r--r-- root/root usr/share/vim/pack/dist/opt/editorconfig/doc/editorconfig.txt
-rw-r--r-- root/root usr/share/vim/pack/dist/opt/editorconfig/doc/tags
drwxr-xr-x root/root usr/share/vim/pack/dist/opt/editorconfig/ftdetect/
-rw-r--r-- root/root usr/share/vim/pack/dist/opt/editorconfig/ftdetect/editorconfig.vim
-rw-r--r-- root/root usr/share/vim/pack/dist/opt/editorconfig/mkzip.sh
drwxr-xr-x root/root usr/share/vim/pack/dist/opt/editorconfig/plugin/
-rw-r--r-- root/root usr/share/vim/pack/dist/opt/editorconfig/plugin/editorconfig.vim
drwxr-xr-x root/root usr/share/vim/pack/dist/opt/justify/
drwxr-xr-x root/root usr/share/vim/pack/dist/opt/justify/plugin/
-rw-r--r-- root/root usr/share/vim/pack/dist/opt/justify/plugin/justify.vim
@ -1407,6 +1433,7 @@ drwxr-xr-x root/root usr/share/vim/syntax/
-rw-r--r-- root/root usr/share/vim/syntax/python2.vim
-rw-r--r-- root/root usr/share/vim/syntax/qb64.vim
-rw-r--r-- root/root usr/share/vim/syntax/qf.vim
-rw-r--r-- root/root usr/share/vim/syntax/qml.vim
-rw-r--r-- root/root usr/share/vim/syntax/quake.vim
-rw-r--r-- root/root usr/share/vim/syntax/quarto.vim
-rw-r--r-- root/root usr/share/vim/syntax/r.vim
@ -1646,6 +1673,7 @@ drwxr-xr-x root/root usr/share/vim/syntax/shared/
-rw-r--r-- root/root usr/share/vim/syntax/zig.vim
-rw-r--r-- root/root usr/share/vim/syntax/zimbu.vim
-rw-r--r-- root/root usr/share/vim/syntax/zir.vim
-rw-r--r-- root/root usr/share/vim/syntax/zserio.vim
-rw-r--r-- root/root usr/share/vim/syntax/zsh.vim
drwxr-xr-x root/root usr/share/vim/tools/
-rw-r--r-- root/root usr/share/vim/tools/blink.c

View File

@ -1,5 +1,5 @@
untrusted comment: verify with /etc/ports/core.pub
RWRJc1FUaeVeqmDYA/rZCARl2YIyPANiFrufy8L0OQHARr0mia8vRZNbJRYQ6AzULNbFamU8IYWRTxF7+SakQqOVWqJ15++tKwU=
SHA256 (Pkgfile) = d7be0e42907c0d31c2c22a05a6e6aa70e8065d052b328e5d959f0b52ef4581bb
SHA256 (.footprint) = 6b8ce7746c5e4fa295066865992a70f17a76d0a0594fe24989a1e1d8020fb3cc
SHA256 (vim-9.0.1757.tar.gz) = e6431007aa33a7944a985dc373411c07fa4110d58283641cd2a5c6b7d4380599
RWRJc1FUaeVeqgoRPQansG0N55NP6DHUhybiZ8aQQWdQfRnsLlsl0J5aAJamBcGRtv53wNojdqiCLoOmmJTFNoC0eQrrwcWo1A8=
SHA256 (Pkgfile) = 774762f87929da341eaf3054da99ecc31fab0ff4d1d8f02fd6522b52817b585b
SHA256 (.footprint) = b0b7325c7961426404e07f7bb9c203a99f062498f838056000cded523bc281a3
SHA256 (vim-9.0.1888.tar.gz) = 90c269fc1c030bf814be08f94e565429626abcb8b2f8c9415f219c4ecafd2231

View File

@ -4,7 +4,7 @@
# Depends on: acl ncurses
name=vim
version=9.0.1757
version=9.0.1888
release=1
source=(https://github.com/vim/vim/archive/v${version}/$name-$version.tar.gz)