From: root Date: Mon, 12 Feb 2007 17:34:58 +0000 (+0000) Subject: *** empty log message *** X-Git-Url: http://git.openbox.org/?a=commitdiff_plain;h=69be7daf285fcbb2e525d72295f3e8ed70682945;p=dana%2Furxvt.git *** empty log message *** --- diff --git a/Changes b/Changes index 052d22d3..034eb0f7 100644 --- a/Changes +++ b/Changes @@ -43,6 +43,8 @@ TODO: fix rounding of colors when !xft (#aaaaaa => #a9a900) (do not use correct, Paskevich). - rip out support for obsolete sgtty.h interface. - rip out support for non-POSIX termios variants. + - update libptytty. + - update iom.C, make it call ptytty::sanitise_stdfd on init. 8.1 Thu Dec 7 22:27:25 CET 2006 - ケリスマスプレゼント - zomg!!1, it's too early!!! diff --git a/src/iom.C b/src/iom.C index b003fa3e..1516cf2f 100644 --- a/src/iom.C +++ b/src/iom.C @@ -151,6 +151,9 @@ static bool iom_valid; static struct init { init () { +#ifdef IOM_PREINIT + { IOM_PREINIT } +#endif iom_valid = true; #if IOM_SIG @@ -175,6 +178,10 @@ static struct init { tw0.start (TSTAMP_MAX); #endif + +#ifdef IOM_POSTINIT + { IOM_POSTINIT } +#endif } ~init () diff --git a/src/iom_conf.h b/src/iom_conf.h index 91c65ccb..03d7fda7 100644 --- a/src/iom_conf.h +++ b/src/iom_conf.h @@ -20,7 +20,7 @@ #ifndef RXVT_IOM_CONF_H__ #define RXVT_IOM_CONF_H__ -#include +#include "rxvtutil.h" #define IOM_IO 1 #define IOM_TIME 1 @@ -29,5 +29,8 @@ #define IOM_IDLE 1 #define IOM_CHILD 1 +#include "libptytty.h" +#define IOM_PREINIT ptytty::sanitise_stdfd (); + #endif diff --git a/src/libptytty.h b/src/libptytty.h index 34cb6794..0dad6a4e 100644 --- a/src/libptytty.h +++ b/src/libptytty.h @@ -23,6 +23,7 @@ struct ptytty { bool make_controlling_tty (); void set_utf8_mode (bool on); + static void sanitise_stdfd (); static void init (); static ptytty *create (); // create a new pty object @@ -56,6 +57,7 @@ void ptytty_close_tty (PTYTTY ptytty); int ptytty_make_controlling_tty (PTYTTY ptytty); void ptytty_set_utf8_mode (PTYTTY ptytty, int on); +void ptytty_sanitise_stdfd (); void ptytty_init (); PTYTTY ptytty_create (); diff --git a/src/proxy.C b/src/proxy.C index 4c996f0d..81f3557c 100644 --- a/src/proxy.C +++ b/src/proxy.C @@ -33,6 +33,7 @@ #include #include #include +#include // helper/proxy support @@ -296,9 +297,28 @@ ptytty::create () return new ptytty_unix; } +void +ptytty::sanitise_stdfd () +{ + // sanitise stdin/stdout/stderr to point to *something*. + for (int fd = 0; fd <= 2; ++fd) + if (fcntl (fd, F_GETFL) < 0 && errno == EBADF) + { + int fd2 = open ("/dev/tty", fd ? O_WRONLY : O_RDONLY); + + if (fd2 < 0) + fd2 = open ("/dev/null", fd ? O_WRONLY : O_RDONLY); + + if (fd2 != fd) + abort (); + } +} + void ptytty::init () { + sanitise_stdfd (); + uid_t uid = getuid (); gid_t gid = getgid ();