Merge remote-tracking branch 'origin/3.7' into 3.8
This commit is contained in:
commit
78380caf21
@ -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
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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
|
||||
|
13
db/Pkgfile
13
db/Pkgfile
@ -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 \
|
||||
|
183
db/db-5.3.21-memp_stat-upstream-fix.patch
Normal file
183
db/db-5.3.21-memp_stat-upstream-fix.patch
Normal 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);
|
718
db/db-5.3.21-mutex_leak.patch
Normal file
718
db/db-5.3.21-mutex_leak.patch
Normal 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
|
||||
|
20
db/db-5.3.28-lemon_hash.patch
Normal file
20
db/db-5.3.28-lemon_hash.patch
Normal 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;
|
19
db/db-5.3.28-mmap-high-cpu-usage.patch
Normal file
19
db/db-5.3.28-mmap-high-cpu-usage.patch
Normal 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
|
694
db/db-5.3.28_cve-2019-2708.patch
Normal file
694
db/db-5.3.28_cve-2019-2708.patch
Normal 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.
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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/
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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/
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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
|
||||
|
@ -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//./ })
|
||||
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user