aboutsummaryrefslogtreecommitdiffstats
path: root/NOTES
diff options
context:
space:
mode:
authorJari Aalto <jari.aalto@cante.net>1997-06-05 14:59:13 +0000
committerJari Aalto <jari.aalto@cante.net>2009-09-12 16:46:50 +0000
commitd166f048818e10cf3799aa24a174fb22835f1acc (patch)
tree1ca27f9243900f8b236d0cde6a3862002aea9e19 /NOTES
parentccc6cda312fea9f0468ee65b8f368e9653e1380b (diff)
downloadandroid_external_bash-d166f048818e10cf3799aa24a174fb22835f1acc.tar.gz
android_external_bash-d166f048818e10cf3799aa24a174fb22835f1acc.tar.bz2
android_external_bash-d166f048818e10cf3799aa24a174fb22835f1acc.zip
Imported from ../bash-2.01.tar.gz.
Diffstat (limited to 'NOTES')
-rw-r--r--NOTES119
1 files changed, 108 insertions, 11 deletions
diff --git a/NOTES b/NOTES
index 0594d22..af6c73f 100644
--- a/NOTES
+++ b/NOTES
@@ -1,5 +1,5 @@
-Platform-Specific Configuration Notes
-=====================================
+Platform-Specific Configuration and Operation Notes
+===================================================
1. configure --without-gnu-malloc on:
@@ -10,7 +10,7 @@ Platform-Specific Configuration Notes
all machines running SunOS YP code: SunOS4, SunOS5, HP/UX
- linux (optional)
+ linux (optional, but don't do it if you're using Doug Lea's malloc)
QNX 4.2
other OSF/1 machines (KSR/1, HP, IBM AIX/ESA)
@@ -32,11 +32,108 @@ being built and linked against, but there is only a stub file in the archive.)
3. Bash cannot be built in a directory separate from the source directory
using configure --srcdir=... unless the version of `make' you're using
- does $VPATH handling right. The SunOS make, for one, does not seem to
- do it right. The script support/mkclone can be used to create a
- `build tree' using symlinks to get around this.
-
-4. I've had reports that username completion does not work on IRIX 5.3
- when linking with -lnsl. This is only a problem when you're running
- NIS. Editing the Makefile after configure runs and removing the
- `-lnsl' from the assignment to `LIBS' fixes the problem.
+ does $VPATH handling right. The script support/mkclone can be used to
+ create a `build tree' using symlinks to get around this.
+
+4. I've had reports that username completion (as well as tilde expansion
+ and \u prompt expansion) does not work on IRIX 5.3 when linking with
+ -lnsl. This is only a problem when you're running NIS, since
+ apparently -lnsl supports only /etc/passwd and not the NIS functions
+ for retrieving usernames and passwords. Editing the Makefile after
+ configure runs and removing the `-lnsl' from the assignment to `LIBS'
+ fixes the problem.
+
+5. There is a problem with Red Hat Linux's `makewhatis' script.
+ Running `makewhatis' with bash-2.0 results in error messages
+ like this:
+
+ /usr/sbin/makewhatis: cd: manpath: No such file or directory
+ /usr/sbin/makewhatis: manpath/whatis: No such file or directory
+ chmod: manpath/whatis: No such file or directory
+ /usr/sbin/makewhatis: cd: catpath: No such file or directory
+ /usr/sbin/makewhatis: catpath/whatis: No such file or directory
+ chmod: catpath/whatis: No such file or directory
+
+ The problem is with `makewhatis'. Red Hat (and possibly other
+ Linux distributors) uses a construct like this in the code:
+
+ eval path=$"$pages"path
+
+ to do indirect variable expansion. This `happened to work' in
+ bash-1.14 and previous versions, but that was more an accident
+ of implementation than anything else -- it was never supported
+ and certainly is not portable.
+
+ Bash-2.0 has a new feature that gives a new meaning to $"...".
+ This is explained more completely in item 1 in the COMPAT file.
+
+ The three lines in the `makewhatis' script that need to be changed
+ look like this:
+
+ eval $topath=$"$topath":$name
+ [...]
+ eval path=$"$pages"path
+ [...]
+ eval path=$"$pages"path
+
+ The portable way to write this code is
+
+ eval $topath="\$$topath":$name
+ eval path="\$$pages"path
+ eval path="\$$pages"path
+
+ You could also experiment with another new bash feature: ${!var}.
+ This does indirect variable expansion, making the use of eval
+ unnecessary.
+
+6. There is a problem with syslogd on many Linux distributions (Red Hat
+ and Slackware are two that I have received reports about). syslogd
+ sends a SIGINT to its parent process, which is waiting for the daemon
+ to finish its initialization. The parent process then dies due to
+ the SIGINT, and bash reports it, causing unexpected console output
+ while the system is booting that looks something like
+
+ starting daemons: syslogd/etc/rc.d/rc.M: line 29: 38 Interrupt ${NET}/syslogd
+
+ Bash-2.0 reports events such as processes dying in scripts due to
+ signals when the standard output is a tty. Bash-1.14.x and previous
+ versions did not report such events.
+
+ This should probably be reported as a bug to whatever Linux distributor
+ people see the problem on. In my opinion, syslogd should be changed to
+ use some other method of communication, or the wrapper function (which
+ appeared to be `daemon' when I looked at it some time ago) or script
+ (which appeared to be `syslog') should catch SIGINT, since it's an
+ expected event, and exit cleanly.
+
+7. Several people have reported that `dip' (a program for SLIP/PPP
+ on Linux) does not work with bash-2.0 installed as /bin/sh.
+
+ I don't run any Linux boxes myself, and do not have the dip
+ code handy to look at, but the `problem' with bash-2.0, as
+ it has been related to me, is that bash requires the `-p'
+ option to be supplied at invocation if it is to run setuid
+ or setgid.
+
+ This means, among other things, that setuid or setgid programs
+ which call system(3) (a horrendously bad practice in any case)
+ relinquish their setuid/setgid status in the child that's forked
+ to execute /bin/sh.
+
+ The following is an *unofficial* patch to bash-2.0 that causes it
+ to not require `-p' to run setuid or setgid if invoked as `sh'.
+ It has been reported to work on Linux. It will make your system
+ vulnerable to bogus system(3) calls in setuid executables.
+
+--- ../bash-2.0.orig/shell.c Wed Dec 18 14:16:30 1996
++++ shell.c Fri Mar 7 13:12:03 1997
+@@ -347,7 +347,7 @@
+ if (posixly_correct)
+ posix_initialize (posixly_correct);
+
+- if (running_setuid && privileged_mode == 0)
++ if (running_setuid && privileged_mode == 0 && act_like_sh == 0)
+ disable_priv_mode ();
+
+ /* Need to get the argument to a -c option processed in the
+