No description
Find a file
Jeff Epler 0f3bb6947c mpool: Avoid leak in the case that lseek fails.
I noticed while running the micropython testsuite under
-fsanitize=address and valgrind that a memory leaks was reported
with a stack trace like
```
2,128 bytes in 1 blocks are definitely lost in loss record 1 of 1
   at 0x48465EF: calloc (vg_replace_malloc.c:1328)
   by 0x62D6D2: mpool_open (mpool.c:67)
   by 0x614233: __bt_open (bt_open.c:300)
   by 0x450A1C: mod_btree_open (modbtree.c:416)
```
specifically in the case where lseek failed.

By moving the lseek call to before the allocation of the MPOOL
object, no new "free mp during error exit" code needed to be
added.
Signed-off-by: Jeff Epler <jepler@gmail.com>
2025-06-01 20:34:32 +02:00
btree all: Remove advertising clause in BSD 4-clause license. 2024-03-15 18:53:28 +11:00
db all: Remove advertising clause in BSD 4-clause license. 2024-03-15 18:53:28 +11:00
docs Import Berkeley DB 1.85. 2016-06-14 02:12:14 +03:00
hash all: Remove advertising clause in BSD 4-clause license. 2024-03-15 18:53:28 +11:00
include/berkeley-db all: Remove advertising clause in BSD 4-clause license. 2024-03-15 18:53:28 +11:00
man all: Remove advertising clause in BSD 4-clause license. 2024-03-15 18:53:28 +11:00
mpool mpool: Avoid leak in the case that lseek fails. 2025-06-01 20:34:32 +02:00
recno all: Remove advertising clause in BSD 4-clause license. 2024-03-15 18:53:28 +11:00
test all: Remove advertising clause in BSD 4-clause license. 2024-03-15 18:53:28 +11:00
changelog Import Berkeley DB 1.85. 2016-06-14 02:12:14 +03:00
Makefile.inc Import Berkeley DB 1.85. 2016-06-14 02:12:14 +03:00
README PORT: Remove the PORT directory. 2024-03-15 18:53:12 +11:00
README.Impt.License.Change all: Remove advertising clause in BSD 4-clause license. 2024-03-15 18:53:28 +11:00

#	@(#)README	8.27 (Berkeley) 9/1/94

This is version 1.85 of the Berkeley DB code.

Newer versions of this software will periodically be made available by
anonymous ftp from ftp.cs.berkeley.edu.  An archive in compressed format
is in ucb/4bsd/db.tar.Z, or in gzip format in ucb/4bsd/db.tar.gz.  If
you'd like to receive announcements of future releases of this software,
send email to the contact address below.

Email questions may be addressed to Keith Bostic at bostic@cs.berkeley.edu.

============================================
Distribution contents:

Makefile.inc	Ignore this, it's the 4.4BSD subsystem Makefile.
README		This file.
btree		The B+tree routines.
changelog	List of changes, per version.
db		The dbopen(3) interface routine.
docs		Various USENIX papers, and the formatted manual pages.
hash		The extended linear hashing routines.
include 	The library header files.
man		The unformatted manual pages.
mpool		The memory pool routines.
recno		The fixed/variable length record routines.
test		Test package.

============================================
Debugging:

If you're running a memory checker (e.g. Purify) on DB, make sure that
you recompile it with "-DPURIFY" in the CFLAGS, first.  By default,
allocated pages are not initialized by the DB code, and they will show
up as reads of uninitialized memory in the buffer write routines.