1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678
|
man-db 2.4.2 (20 September 2003)
================================
Major changes since man-db 2.4.1:
Fixes:
------
o SECURITY: Fix a number of buffer overruns in configuration file
handling, ultimate source location, and MANPATH processing. This
is CVE CAN-2003-0620.
o SECURITY: Restrict the use of the DEFINE directive in ~/.manpath
to code running with dropped privilege. Previously, the
'compressor' variable could be used to run arbitrary code with
raised privilege. This is CVE CAN-2003-0645.
o Make sure to initialize mandata structures to zero. The uses of
uninitialized memory resulting from this had been leading to
random segfaults.
o Drop privileges in order to be able to read pages in
non-world-readable user manpaths while setuid.
o man can be built with --disable-setuid again.
o man's locale support has been revamped. The encoding of source
manual pages is no longer related to the encoding of the input
passed to *roff or to *roff's terminal output device. These
frequently differ, especially in UTF-8 locales but in other
circumstances as well, and a "just send 8-bit data" approach is no
longer adequate. If you are using a version of groff with the
Debian multibyte patch applied, pass the --enable-mb-groff option
to configure.
o When using GDBM, accessdb and apropos did not return database
entries in sorted order, since GDBM's key traversal interface is
not lexicographically ordered. The database layer has been
corrected to cope with this.
Improvements:
-------------
o man now calls mandb to update databases rather than doing it
itself. This leaves cat pages as the sole remaining reason for man
to be setuid.
o The "undocumented" message is only displayed if a corresponding
executable is found on the $PATH.
o All programs that read ~/.manpath now take a -C option to cause
them to read a different user configuration file instead.
o The --enable-debug option to configure has been removed. man-db's
Makefiles now always calculate full dependencies for C files.
o mandb caches the contents of directories, significantly speeding
up the purging of obsolete entries.
o mandb now knows how to purge database entries corresponding to
removed stray cat pages.
In addition, a pipeline execution library has been written, which
will make it possible to eliminate all or almost all use of the
shell in a future release. Unfortunately, time pressures due to the
security issues above meant that the pipeline library was not well
enough tested for use in this release, so it is present but unused.
That will be the first item for 2.4.3.
man-db 2.4.1 (22 December 2002)
===============================
Major changes since man-db 2.4.0:
The man-db CVS repository has moved from sourceforge.net to
savannah.nongnu.org.
Fixes:
------
o Don't enter an infinite loop when the SYSTEM environment variable
is set.
o man doesn't segfault when trying to follow a broken symlink.
o mandb no longer corrupts databases when deleting entries that are
part of multi keys.
o Prevent a possible buffer overflow when encountering large multi
keys.
o Man page names are escaped when globbing, so [(1) can now be found
even if the database is not up to date.
o Correct an access() check that led to 'man -X -l -' producing no
output.
o lexgrog can now cope with man pages containing only a .so link.
o Manual hierarchies with a specific encoding are put into the
search path in the correct order. A bug in $LANGUAGE handling had
formerly meant that 'de' would take precedence over 'de_DE.UTF-8'.
Improvements:
-------------
o man's behaviour when searching for page names that begin with a
digit has been made more intuitive, as has its treatment of
section names that are extensions of ones mentioned in the
configuration file but are not themselves explicitly named as
sections.
o The default line length for pages formatted for terminal output
has been increased (reducing margin size) to match the default in
groff 1.18.
o Proofread the manual.
o The -w flag to man has been changed to display the name of only
the source nroff file. A -W flag has been introduced which
displays the name of the cat file as well. If both flags are given
to man, it will behave as before.
o If bzip2 is installed, pages compressed with bzip2 can now be
displayed.
o Add support for displaying an additional message when no man page
is found, which can be used to direct users to a generic
"undocumented" page.
o The manual hierarchy layout will now be guessed where possible if
an explicit --enable-mandirs argument is not passed to configure.
man-db 2.4.0 (26 June 2002)
===========================
Major changes since man_db-2.3.20:
I have changed the package name to man-db, as the underscore was
awkward.
Upgrading from version 2.3.x:
-----------------------------
The database format has changed slightly, so you will need to run
'mandb --create' after installing the new version to rebuild your
databases from scratch. (Distribution packages should do this
automatically for system databases.)
Fixes:
------
o The GNU nroff test in configure now works when /bin/sh is ash.
o When scanning pages for NAME sections, lexgrog and mandb no longer
accidentally eat the line after each occurrence of the no-op
request '.'.
o 'man --local' drops privileges throughout to avoid problems with
non-world-readable home directories.
o Newly created cat directories are chowned to the man user when
running as root.
o 'man --html' no longer creates its temporary file with raised
privileges, so that it now works with a setuid man.
o man detects preprocessors correctly when setuid.
o Various segfault fixes: explicitly null-terminate data returned by
the Berkeley DB library to avoid some rare crashes; don't reuse a
freed pointer in some cases of pages with multiple names; handle
MANPATHs containing '::' more safely.
o Correctly parse manual pages using DOS line-ending conventions.
o Work around a misfeature in Berkeley DB: it pauses for several
seconds if asked to read a zero-length database, on the assumption
that somebody is still writing the metadata page. man is generally
better off just ignoring the database in this case.
o Work around corrupted databases in the case where the nextkey
pointer chain contains a loop.
Improvements:
-------------
o man looks in the filesystem followed by the database, rather than
the other way round. Unix filesystems are quite good databases for
this purpose, and the man database is only superior when looking
up names that don't have associated links in the filesystem.
o 'apropos --wildcard --exact' makes sure wildcards match an entire
description or page name, unlike 'apropos --wildcard' which may
match on word boundaries too.
o man's page-searching code has been substantially rearranged, and
now only starts displaying pages when it has finished searching
for candidates. This allows pages to be sorted more sensibly.
o Manual pages are formatted in UTF-8 if that is the current
locale's character set. The -E option is now available to force a
particular encoding. Note that some versions of (e.g.) less have
problems displaying UTF-8 in conjunction with backspace
characters; groff 1.18 should alleviate this by using ANSI colour
escapes instead.
o The less prompt string sets -PM as well as -Pm.
o Invoking man from within less now sets the correct page title in
the inner less.
o Unless the --match-case option is used, man will search for pages
case-insensitively.
o Update the mechanism for setting the line length so that it also
works with groff 1.18.
o The -R switch is added to the less prompt string, which is needed
to display the ANSI colour escapes generated by groff 1.18
correctly.
o The $MANLESS environment variable may be used to override the
normal creation of the less prompt string.
o Translation updates for French, German, and Spanish, and a new
Catalan translation. See man/THANKS.
man_db-2.3.20 (7 September 2001)
================================
Major changes since man_db-2.3.19:
Fixes:
------
o A typo in 2.3.19 caused character sets for many languages to be
detected incorrectly. This especially affected multibyte
languages.
o Long options in the environment variable LESS are handled
correctly.
o When checking if cat pages need to be updated, check for different
timestamps rather than whether the cat page is newer, as otherwise
we were confused by tools like tar that preserve timestamps in
their archives. Each cat page is now set to have the same mtime as
its corresponding man page.
o Look up the correct character set each time a page is displayed
rather than just the first time, in case pages in several
different character sets are viewed in a single session.
o groff requests are no longer assumed to be case-insensitive when
scanning for preprocessors, so for example mdoc's .Eq request
isn't mistaken for the .EQ which introduces eqn commands.
o Escape arguments passed to the shell that might contain dangerous
characters.
o Avoid an infinite loop if the LANGUAGE environment variable is set
but empty.
o The --create option to mandb now implies --no-purge.
o Temporary files are handled with more secure permissions.
Improvements:
-------------
o Use a variant of mkstemp() rather than tempnam(), to avoid classic
race conditions. (I don't believe the races were usefully
exploitable.)
o Tolerate whatis entries in a database that point to themselves.
o Detect more translations of the NAME section.
o Add examples of man pages written in POD and SGML.
o lexgrog is now installed in /usr/bin by default, with proper
argument parsing, an improved output format, and a man page. It is
expected to be used by programs that need to validate man pages.
o The -H (--html) option to man is now compiled in by default, and
supports the BROWSER specification (as documented at
http://www.tuxedo.org/~esr/BROWSER/ and amended at
http://www.dwheeler.com/browse/secure_browser.html).
man_db-2.3.19 (5 July 2001)
===========================
Major changes since man_db-2.3.18:
Fixes:
------
o The user configuration file ~/.manpath is no longer trusted when
deciding whether to drop privileges. In the process, user cat
directory handling has been improved.
o Commands of the form 'man -S "" foo' formerly emptied the list of
acceptable sections and then searched the database anyway, and
commands of the form 'man -S ::: foo' segfaulted. Both now use the
standard list of sections.
o The HUP and TERM signals are now handled better.
o straycats processing invokes 'col -bx' rather than 'col-bx'.
o The root user is now correctly allowed to update databases in
system manpaths.
o apropos and whatis no longer enter infinite recursion if a
database contains an entry pointing to itself.
Improvements:
-------------
o When compiled with --enable-setuid, man and mandb can be installed
non-setuid. In this mode, they will be unable to write cat pages
in system directories or to modify system databases, but will
otherwise operate correctly. This allows a single binary package
to support setuid and non-setuid modes of operation.
o The ordering of manual sections is read from SECTION directives in
the configuration file rather than being hard-coded.
o The MANDB_MAP configuration file directive is documented more
clearly.
o Multiple whatis entries separated by commas, break requests,
and/or paragraph requests are handled more intelligently.
o Fill control requests (.nf and .fi) cause lexgrog to assume a
break at each newline.
o Duplicate manpath entries (often generated in the course of
national language support) are removed, so that 'man -a' works
better.
o man_db's binaries are installed unstripped by default.
o Since supporting certain layouts of manual page hierarchies causes
problems for others, the layout is now selectable via configure.
The default is to try all layouts.
o man only does an on-the-fly update of the database caches when the
--update option is given.
o Manual pages are displayed with a line length appropriate to the
current terminal. If a non-standard line length is used (i.e. the
terminal is not between 66 and 80 characters wide) then cat pages
will not be saved.
o mandb tries to purge obsolete entries from its databases. Using
the --create flag should now usually only be necessary in cases of
database corruption.
man_db-2.3.18 (14 May 2001)
===========================
Major changes since man_db-2.3.11:
man_db-2.3.18 is an interim release under new maintenance by Colin
Watson, merging much of the work done by former maintainers (Graeme
Wilford and Fabrizio Polacco). It incorporates several years of
changes made in the Debian GNU/Linux distribution's package of
man_db.
Here are a few highlights, with the names of the maintainers
responsible for them. As I am documenting after the fact of other
people's changes of a few years ago, I have undoubtedly missed a
number of fixes and improvements; I promise to keep track of these
as I go along in future.
Fixes:
------
o Multiple security fixes, including better handling of temporary
files, a format string vulnerability fix, and more careful
dropping of privileges when running setuid. [Fabrizio, Colin]
o Databases no longer disappear temporarily while they are being
regenerated. [Fabrizio]
o Corrected handling of locale environment variables. Setting
several colon-separated locales in $LANGUAGE also works now.
[Colin]
o whatis and apropos are more careful about the possibility of a
corrupted database. [Fabrizio, Colin]
Improvements:
-------------
o If root has private manual hierarchies, cat pages generated from
them are no longer chowned to a less-privileged user. [Wilf]
o Rewrote configuration file handling, adding DEFINE directives to
set paths to external programs. The configuration file is now
called man_db.conf. [Wilf]
o Support FHS paths (/usr/share/man and /var/cache/man) in
preference to FSSTND paths (/usr/man and /var/catman). [Fabrizio]
o Converted from catgets to GNU gettext for national language
support. [Fabrizio, Colin]
o Several new and improved localized message catalogues and
translated man pages. [Fabrizio, Colin, other contributors]
o Added accessdb utility, which displays the contents of a manual
page database. [Fabrizio]
o Added user configuration file ~/.manpath, with the same syntax as
the global configuration file. [Fabrizio]
o Leading or trailing colons in the MANPATH environment variable
cause the manpath derived from configuration files to be prepended
or appended respectively. A double colon in the middle of the
environment variable causes the configuration file manpath to be
inserted between the colons. [Fabrizio]
o Added experimental -H and -Thtml options to take advantage of
groff's new HTML driver. [Fabrizio]
o lexgrog now scans manual pages to guess which preprocessors are
needed. [Fabrizio]
o Create cat directories on the fly if necessary. [Fabrizio]
o Supply a wrapper which explicitly drops privileges to uid man if
man or mandb is run as root. In the future, splitting out setuid
functions into a separate helper process may remove the need for
this paranoia. [Fabrizio]
o Add --test option to mandb, which merely reports errors in manual
page hierarchies rather than actually creating or updating a
database. [Fabrizio, Colin]
o Manual pages may now be symlinks outside the mantree. This should
pose no significant security concerns, and utilities such as GNU
stow create such symlinks. [Colin]
o Deprecate whatis references for man, and display a warning if
displaying a page relies on going through a whatis reference. They
often lead to confusingly non-obviously-deterministic behaviour,
and guaranteeing that man will honour them even when the database
is out of date causes performance problems. [Colin]
man_db-2.3.11 (21 September 1995)
=================================
Major changes since man_db-2.3.10:
o The man_db manual is bundled in source form.
o Components of $PATH not in the config file were checked for
`man' subdirectories. Now they are also checked for `../man'.
o Untarring a new manual page (with a timestamp older than the
relative cat file) over the original did *not* cause man/catman
to reformat the replacement. This is changed. As a side effect,
untarring an unchanged man file over the original will also cause
a reformat.
man_db-2.3.10 (13 July 1995)
============================
Major changes since man_db-2.3.5:
Fixes:
------
o Global databases were not owned by setuid owner (if applicable).
As a consequence only mandb could update the databases unless
man was run by superuser. Stupid bug.
o The keyword passed to apropos _never_ matched the first word
of any whatis line.
o FAVOUR_STRAYCATS code (if enabled), did not work properly.
o zsoelim did not work as advertised.
Improvements:
-------------
o Man removes its temporary files upon abnormal termination.
o apropos does proper word matching rather than the fuzzy
matching of 2.3.5. eg. supplying any of the keywords:
`ld.so', `a.out', `dynamic', `linker' or `loader' will match
the following entry:
ld.so (8) - a.out dynamic linker/loader
whereas `a.out' and `loader' used to fail.
o man/whatis/apropos return with exit code 16 if manual
page/file or keyword is not matched. Previously exit code 0
was used making it difficult for callers to know if the lookup
was successful.
o addition of German message catalogue.
o `apropos' and `man -k' do POSIX specified regex matching rather
than keyword searches if the environment variable POSIXLY_CORRECT
is defined.
o added glob-only support of native system manual hierarchies
on HP-UX, OSF and Solaris operating systems. Improved the
whatis parsing code to cope with majority of HP-UX manual pages.
o ported to NeXTstep.
man_db-2.3.5 (21 April 1995)
============================
Major changes since man_db-2.2.1:
Added support for...
--------------------
o Non-standard section names i.e. multi-character
o Compressed manual pages.
A new utility `zsoelim' is included to correctly handle nroff
.so requests that point to a file which has been compressed.
o Compressed stray cats.
By definition, stray cats are not re-creatable as they have no
relative source manual page. As they may have non-default
compression extensions and may reside on read-only media,
stray cats have the same compression support as manual pages.
o FSSTND proposed `extension' support.
Specific package manual pages may be installed in the standard
sections but with a package-unique extension appended as in
exit(3tcl) - ../man/man3/exit.3tcl. Using the command
`man -e tcl exit'
would then display an exit manual page with a tcl extension, if
available. Of course, `man 3tcl exit' works as always.
o FSSTND proposed NLS man subdirectories.
Of the form .../man/<locale>/man<sec>/
o NLS message catalogue hooks.
Provision has been made for the programs to emit their messages in
a language dependent form.
o `whatis' referred manual pages.
Some manual pages contain relevant information for commands or
programs that would not otherwise reference the page.
The `whatis' part of the manual page is used to create virtual
links to these pages by all of the names mentioned within it.
Examples include names such as `.' and `:' referencing the local
shell manual page.
o Catman utility.
Used to pre-format the manual pages into cat pages.
o Operating systems other than Linux.
man_db has been reported to compile on the following platforms:
Linux, SunOS, Solaris, Ultrix, OSF, HP-UX, AIX, IRIX
(although portability does not extend to support of native
manual tree structures on some of these systems, eg. HP-UX)
o Berkeley DB library routines.
This compliments the support of both gdbm and ndbm which already
existed. DB databases may be shared across platforms.
o $MANOPTS environment variable.
The environment variable MANOPTS may be set to any string in
command line option/argument format. It is parsed by man(1) prior
to its actual command line.
o Per manual hierarchy cat directory locations.
It is possible to redirect your cat pages to other directories or
even other file systems.
o Per manual hierarchy nroff/[tg]roff format scripts.
Ability to create custom formatter scripts that are called by
man(1) to enable format/display of non-standard manual pages or
manual pages requiring a special macro package.
o Extension of `man -l'.
Arguments following -l are interpreted as local files requiring
format and display. Extensions are:
`man -l -' formats and displays stdin.
`man -l foo.1.gz' decompresses, formats and displays foo.1.gz.
o Latin1 manual pages/choice of nroff output device.
o Viewing of ASCII manual pages formatted for a latin1 output device
on a 7 bit ASCII terminal (-7).
o Whatis and apropos utilities support regex and wildcard matching.
o checkman.
Shell script utility that will find and display duplicated manual
pages found across manual page hierarchies.
o mkcatdirs.
Shell script utility to create appropriate cat directories after
installation and setup.
Conceptual improvements
-----------------------
o Replacement of single database with multiple modular db's.
Easier integration of additional information into the databases in
the future.
o Both user and global databases share the same name:
`index.<db-type>'
where <db-type> could be `bt', `db' or `pag' and `dir'.
o Databases contain `whatis' text.
Makewhatis and text whatis databases are redundant, although
whatis and apropos will use the text whatis database for information
if they cannot read from a relevant index database.
o straycats handled without need for `placeholders'.
o Friendly less(1) prompt.
If man(1) uses less(1) as its pager (dependent on both static and
dynamic factors), the prompt is modified to suit the manual page
being displayed. The modification performed is also changeable by
the user.
o man_db manual.
man_db has a manual that covers the setup, maintenance and use of
a generic online manual page system.
o Modes of operation.
The man_db utilities can be compiled with various modes of
operation in mind. Eg. man can be stopped from updating databases
and/or creating cat files in situations where security is extremely
important. See the man_db manual for details.
Speed improvements
------------------
o Background compression/saving of cat files.
Cat files are compressed and saved in the background, whilst the
user is able to browse the formatted page directly.
o Merge of straycats and makewhatis into mandb.
While mandb has slowed, it now incorporates makewhatis and straycats
functionality and is much faster as a whole. 2.0a2 used grep/awk,
2.2 used C regex and 2.3 now uses lex sourced C to strip out the
whatis information from the raw man or cat files.
o Berkeley DB support.
Provides lower database initialisation overhead as compared with
gdbm.
o Extremely fast whatis(1) searches.
whatis(1) uses keyed database lookups to retrieve whatis strings
for standard (non regex/wildcard) searches.
Fixes
-----
o Correct handling of $MANSECT.
The environment variable MANSECT is no longer ignored.
o Acknowledgement of $MANPATH order.
manpath elements are searched in the order specified.
|