tags 374708 upstream patch
thanks
Le Tuesday 20 June 2006 à 22:11:41, Ludovic Rousseau a écrit:
> A mail from cron:
>
> /etc/cron.daily/man-db:
> *** glibc detected *** free(): invalid next size (fast): 0x080decf8 ***
> /etc/cron.daily/man-db: line 33: 3644 Aborted
> start-stop-daemon+--start --pidfile /dev/null --startas /usr/bin/mandb
> --oknodo --chuid man -- --no-purge --quiet
> run-parts: /etc/cron.daily/man-db exited with return code 134
The bug is classic: off-by-one buffer overflow.
The function make_content() in libdb/db_lookup.c calculates the size
needed for cont.dptr but forget to include the final NUL byte.
Please apply this proposed patch.
diff -r --unified=10 man-db-2.4.3/libdb/db_lookup.c
man-db-2.4.3.new/libdb/db_lookup.c
--- man-db-2.4.3/libdb/db_lookup.c 2003-11-16 19:46:47.000000000 +0100
+++ man-db-2.4.3.new/libdb/db_lookup.c 2006-07-01 13:40:12.000000000 +0200
@@ -254,21 +254,21 @@
in->whatis = dash + 1;
cont.dsize = strlen (dash_if_unset (in->name)) +
strlen (in->ext) +
strlen (in->sec) +
/* strlen (in->_st_mtime) */ + 11 +
/* strlen (in->id) */ + 1 +
strlen (in->pointer) +
strlen (in->filter) +
strlen (in->comp) +
- strlen (in->whatis) + 8;
+ strlen (in->whatis) + 8 +1;
cont.dptr = (char *) xmalloc (cont.dsize);
#ifdef ANSI_SPRINTF
cont.dsize = 1 + sprintf (cont.dptr,
"%s\t%s\t%s\t%ld\t%c\t%s\t%s\t%s\t%s",
dash_if_unset (in->name),
in->ext,
in->sec,
in->_st_mtime,
in->id,
in->pointer,
--
Dr. Ludovic Rousseau [EMAIL PROTECTED]
-- Normaliser Unix c'est comme pasteuriser le camembert, L.R. --