cvs commit: src/usr.sbin/kldxref kldxref.c

Bruce Evans bde at
Mon Aug 7 03:59:37 UTC 2006

On Sun, 6 Aug 2006, Dag-Erling [iso-8859-1] Smørgrav wrote:

> Marcel Moolenaar <marcel at> writes:
>>   Log:
>>   Fix (static) buffer overflow bug. The dest buffer is of size MAXPATHLEN,
>>   so dest[MAXPATHLEN] falls outside the buffer.  This bug corrupted
>>   arenas[0] defined in libc's malloc.c on PowerPC when kldxref is shared,
>>   which triggered a delayed SIGSERV.
> MAXPATHLEN should be spelled PATH_MAX.

Actually, MAXPATHLEN is better since it is honestly unportable.  It works
on all [Free]BSD systems, while PATH_MAX only works on POSIX systems that
define it.  The correct spelling of PATH_MAX is {PATH_MAX} or:

 	char buf[PATH_MAX];
 	long path_max;

 	path_max = pathconf(pathname_of_interest, _PC_PATH_MAX);
 	if (path_max == -1)
 	assert(path_max > 0 && path_max <= SIZE_MAX)
 	buf = malloc((size_t)path_max);
 	if (buf == NULL)

The correct spelling is too hard to use for simple unportable utilities
like kldxref.


More information about the cvs-src mailing list