On Wed 01/01/2020 23:03, Ted Unangst wrote: > Björn Ketelaars wrote: > > - When estimating the amount of available RAM, scrypt ignores > > RLIMIT_DATA on systems which have mmap. > > This is wrong on OpenBSD. I sent an email to Colin, but the update should > patch this out in the meantime.
Although I'm not doubting that you are right, I fail to understand why ignoring RLIMIT_DATA on OpenBSD is bad. Could you explain why? I prepared a patch, which: - addresses ignoring RLIMIT DATA, reverting https://github.com/Tarsnap/scrypt/commit/2b478e7ce590a6564d89417ddad4f3dd4bbdcaf6 - fixes compiling on base-gcc archs (found by kmos@) OK? diff --git Makefile Makefile index 31dc84c3443..04b73ef02b3 100644 --- Makefile +++ Makefile @@ -3,6 +3,7 @@ COMMENT = command-line encryption using scrypt key derivation function DISTNAME = scrypt-1.3.0 +REVISION = 0 SHARED_LIBS += scrypt-kdf 0.0 # 1.0 @@ -18,6 +19,9 @@ WANTLIB = c crypto MASTER_SITES = ${HOMEPAGE} EXTRACT_SUFX = .tgz +COMPILER = base-clang ports-gcc +COMPILER_LANGS = C + CONFIGURE_STYLE = gnu CONFIGURE_ARGS = --enable-libscrypt-kdf diff --git patches/patch-lib_util_memlimit_c patches/patch-lib_util_memlimit_c new file mode 100644 index 00000000000..788724aa76e --- /dev/null +++ patches/patch-lib_util_memlimit_c @@ -0,0 +1,24 @@ +$OpenBSD$ + +Do not ignore RLIMIT_DATA on OpenBSD. Revert +https://github.com/Tarsnap/scrypt/commit/2b478e7ce590a6564d89417ddad4f3dd4bbdcaf6 + +Index: lib/util/memlimit.c +--- lib/util/memlimit.c.orig ++++ lib/util/memlimit.c +@@ -167,14 +167,12 @@ memlimit_rlimit(size_t * memlimit) + memrlimit = (uint64_t)rl.rlim_cur; + #endif + +-#ifndef HAVE_MMAP +- /* ... RLIMIT_DATA (if we're not using mmap)... */ ++ /* ... RLIMIT_DATA... */ + if (getrlimit(RLIMIT_DATA, &rl)) + return (1); + if ((rl.rlim_cur != RLIM_INFINITY) && + ((uint64_t)rl.rlim_cur < memrlimit)) + memrlimit = (uint64_t)rl.rlim_cur; +-#endif + + /* ... and RLIMIT_RSS. */ + #ifdef RLIMIT_RSS