Re: XTerm verschluckt die Env.-Variable TMPDIR

2006-04-22 Diskussionsfäden Helmut Waitzmann
Helmut Waitzmann [EMAIL PROTECTED] writes:

»execargs«

ist ein Programm, das mit seinen Parametern argv[1] argv[2] ... die
Funktion execvp(argv[1], { argv[2], argv[3], ...}) aufruft.

$ TMPDIR=/tmp execargs printenv printenv TMPDIR; printf 'Exit Code: %s\n' $?
/tmp
Exit Code: 0

Setze ich jetzt bei »execargs« das Setuid- oder Setgid-Flag auf eine
Benutzer- oder Gruppenkennung, die sich von meiner unterscheidet, erhalte
ich folgende Ausgabe:

$ TMPDIR=/tmp execargs printenv printenv TMPDIR; printf 'Exit Code: %s\n' $?
Exit Code: 1

Das scheint also eine Eigenschaft der Laufzeitumgebung zu sein.  »xterm«
tut es also nicht explizit.

Das selbe in grün mit screen(1).  Es scheinen also wohl alle suid- und
sgid-Programme betroffen zu sein.

Die Vermutung liegt nahe, dass die Ursache im C-library oder im
Startup-Code liegt.
-- 
Wenn Sie mir E-Mail schreiben, stellen  | When writing me e-mail, please
Sie bitte vor meine E-Mail-Adresse  | precede my e-mail address with
meinen Vor- und Nachnamen, etwa so: | my full name, like
Helmut Waitzmann [EMAIL PROTECTED], (Helmut Waitzmann) [EMAIL PROTECTED]


-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)



Re: XTerm verschluckt die Env.-Variable TMPDIR

2006-04-15 Diskussionsfäden Michelle Konzack
Am 2006-04-07 00:29:33, schrieb Helmut Waitzmann:

 Der Fehler ist alt und bestand schon in Woody:  Fehlerbericht Nr. 276417
 im Debian Bug Tracking System.  Erinnerst Du Dich?

Ja, habs jetzt nachgelesen...

Komisch ist nur, das dieser BUG erst jetzt nach der umstellung
auf Sarge auftauchte, denn unter Woody hatte ich TMPDIR und bis
vor ein paar Wochen keine Probleme.

 Ich habe damals nach Branden Robinsons Aussage »xterm contains no logic
 for scrubbing the environment.« aus Zeitgründen klein beigegeben.
 
 Der Testfall, der den Fehler beschreibt -- 
 
$ env TMPDIR=/tmp xterm -hold -e printenv TMPDIR
 
 einerseits und
 
$ env DUMMY=/tmp xterm -hold -e printenv DUMMY
 
 andererseits -- lässt keinen Zweifel daran, dass xterm hier TMPDIR
 verschluckt.

Und xterm verschuckt noch mehr...

Werde mal in der debian-x nachfragen, denn ich habe jede menge
Programme laufen, die massiven DoS Attaken in /tmp ausgesetzt
werden können, weshalb ich auf $TMPDIR (/tmp/$USER, chmod 700)
angewiesen bin.

TMP nach /home/$USER/tmp tu verlagern schlägt fehl, da es sich um
ein SSH getunneltes NFS-Share handelt.

snip

 Das scheint also eine Eigenschaft der Laufzeitumgebung zu sein.  »xterm«
 tut es also nicht explizit.

Da heist es also die xterm Source umzugraben...

Greetings
Michelle Konzack


-- 
Linux-User #280138 with the Linux Counter, http://counter.li.org/
# Debian GNU/Linux Consultant #
Michelle Konzack   Apt. 917  ICQ #328449886
   50, rue de Soultz MSM LinuxMichi
0033/3/8845235667100 Strasbourg/France   IRC #Debian (irc.icq.com)


-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)



Re: XTerm verschluckt die Env.-Variable TMPDIR

2006-04-06 Diskussionsfäden Helmut Waitzmann
Michelle Konzack [EMAIL PROTECTED] writes:

Am 2006-03-23 16:31:29, schrieb Friedhelm Usenet Waitzmann:

 Bekannt. Xterm in sarge verschluckt die Environmentvariable

Bekannt?  -  Also ich bin gerade noch mal das BTS von xfree86
durchgegangen und habe in den tausenden messages nichts gefunden...

Wo haste das gelesen?

Der Fehler ist alt und bestand schon in Woody:  Fehlerbericht Nr. 276417
im Debian Bug Tracking System.  Erinnerst Du Dich?

Ich habe damals nach Branden Robinsons Aussage »xterm contains no logic
for scrubbing the environment.« aus Zeitgründen klein beigegeben.

Der Testfall, der den Fehler beschreibt -- 

   $ env TMPDIR=/tmp xterm -hold -e printenv TMPDIR

einerseits und

   $ env DUMMY=/tmp xterm -hold -e printenv DUMMY

andererseits -- lässt keinen Zweifel daran, dass xterm hier TMPDIR
verschluckt.

Vielleicht kann man jetzt einen neuen Anlauf nehmen?

Also, los geht's:

»execargs«

/*
  execargs.c - execute arguments via execvp() resp. execv()
  2006-04-06T00:56:42+0200
*/

#define _POSIX_SOURCE 1
#define _POSIX_C_SOURCE 199506L
#define _XOPEN_VERSION 4

#include errno.h /* errno, EINVAL, ENOENT, NOEXEC, EACCES */
#include stddef.h /* NULL, size_t */
#include stdio.h /* fprintf(), stderr */
#include stdlib.h /* EXIT_... */
#include string.h /* strerror() */
#include unistd.h /* exec...() */

static const char * invocation_name=execargs;

int
main(int argc, char **argv)
{
if(argc  0  argv[0] != NULL)
{
/* an invocation name is supplied by the OS resp. run 
time
 * environment
 */
 
/* strip all leading path components from argv[0], if 
there are any:
 */
invocation_name = strrchr(argv[0], '/');
/* invocation_name points to last ocurrence of '/' in
 * argv[0] if there is one, otherwise invocation_name is
 * NULL
 */
if(invocation_name == NULL)
/* there aren't any '/' characters in argv[0]: 
nothing to
 * do, just use argv[0] as invocation_name.
 */
invocation_name = argv[0];
else
/* we have found a last '/' character: 
invocation_name now
 * points to it.
 *
 * let invocation_name begin after last '/' 
character:
 */
invocation_name += 1;
}

/* process option arguments:
 */

if (argc = 2  argv[1] != NULL)
/* At least the name of the program to be executed is given.
 */
{
/* argv[1] is the name of the program to be executed,
argv+2 is its argument vector:
*/
execvp(argv[1], argv+2);
/* if returning from exec...(), an error has occurred:
 */
{
int saved_errno=errno;
{
const char * error_text=strerror(errno);

fprintf(stderr,
%s:\ncannot execute %s%s%s\n,
invocation_name,
argv[1],
(error_text != NULL) ? :\n : 
.,
(error_text != NULL) ? 
error_text : 
);
}
switch(saved_errno)
{
#ifdef ENOENT
case ENOENT:
#endif
return 127;
break;
#ifdef EACCES
case EACCES:
#endif
#ifdef EPERM
case EPERM:
#endif
#ifdef ENOEXEC
case ENOEXEC:
#endif
#ifdef ENOTDIR
case ENOTDIR:
#endif
#ifdef EINVAL
case EINVAL:
#endif
#ifdef EISDIR
case EISDIR:
#endif
#ifdef ELIBBAD
case ELIBBAD:
#endif
return 126;
break;
default:

Re: XTerm verschluckt die Env.-Variable TMPDIR (was: $TMPDIR funktioniert unter x-window/fvwm nicht mehr)

2006-04-02 Diskussionsfäden Michelle Konzack
Am 2006-03-23 16:31:29, schrieb Friedhelm Usenet Waitzmann:

 Bekannt. Xterm in sarge verschluckt die Environmentvariable

Bekannt?  -  Also ich bin gerade noch mal das BTS von xfree86
durchgegangen und habe in den tausenden messages nichts gefunden...

Wo haste das gelesen?

 TMPDIR. Allerdings weiß ich nichts davon, dass das nicht
 auftreten soll, wenn man das Xterm automatisch ein $SHELL

Genau, denn wenn Du ein

xterm -e /bin/bash -c /usr/bin/mc

machst, wird es nichts, aber mit

xterm -e /bin/bash -l -c /usr/bin/mc

verwandelt sich die neu aufgerufene SHELL in eine Loginshell
und ließt die env ein.  Somit steht $TMPDIR wieder zur verfügung.

 Abhilfe: mit dem Programm env die Belegung dieser Variablen in
 das von xterm gestartete Programm hineinreichen:
 
 xterm -e env TMPDIR=$TMPDIR $SHELL

Denke nicht das es einen Unterschied macht, ob ich env oder
bash aufrufe.

Greetings
Michelle Konzack


-- 
Linux-User #280138 with the Linux Counter, http://counter.li.org/
# Debian GNU/Linux Consultant #
Michelle Konzack   Apt. 917  ICQ #328449886
   50, rue de Soultz MSM LinuxMichi
0033/3/8845235667100 Strasbourg/France   IRC #Debian (irc.icq.com)


-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)



XTerm verschluckt die Env.-Variable TMPDIR (was: $TMPDIR funktioniert unter x-window/fvwm nicht mehr)

2006-03-23 Diskussionsfäden Friedhelm Usenet Waitzmann
Michelle Konzack:
Teil der Konfiguration des Windowmanagers fvwm:

woody:

*ButtonBar1: (Icon 32x32.xterm.xpm,   Action 'Exec xterm -geometry 92x29+0+150 
-fn 10x20 -title xterm  -name xterm -n xterm -bg blue -fg 
white -sb -sl 8192 ')
*ButtonBar1: (Icon 32x32.filemgr.xpm, Action 'Exec xterm -geometry 94x29+0+150 
-fn 10x20 -title Midnight Commander -name mc-n mc-e /usr/bin/mc 
')
*ButtonBar1: (Icon 32x32.mutt.xpm,Action 'Exec xterm -geometry 80x28+0+170 
-fn 10x20 -title mutt   -name mutt  -n mutt  -e 
/usr/bin/mutt ')

sarge:

*ButtonBar1: (Icon 32x32.xterm.xpm,   Action 'Exec xterm -geometry 92x29+0+150 
-fn 10x20 -title xterm  -name xterm -n xterm -bg blue -fg 
white -sb -sl 8192 ')
*ButtonBar1: (Icon 32x32.filemgr.xpm, Action 'Exec xterm -geometry 94x29+0+150 
-fn 10x20 -title Midnight Commander -name mc-n mc-e /bin/bash -l 
-c /usr/bin/mc ')
*ButtonBar1: (Icon 32x32.mutt.xpm,Action 'Exec xterm -geometry 80x28+0+170 
-fn 10x20 -title mutt   -name mutt  -n mutt  -e /bin/bash -l 
-c /usr/bin/mutt ')

Do you see it?

the first line is the same as the line under Wooody and it
works.  But xterm called for mc and mutt does not work
and need additionaly /bin/bash -l -c ...

Was sagste jetzt dazu?

Bekannt. Xterm in sarge verschluckt die Environmentvariable
TMPDIR. Allerdings weiß ich nichts davon, dass das nicht
auftreten soll, wenn man das Xterm automatisch ein $SHELL
starten lässt, sondern nur, wenn man mit -e program [ arg ]...
ein Programm angibt.

Abhilfe: mit dem Programm env die Belegung dieser Variablen in
das von xterm gestartete Programm hineinreichen:

xterm -e env TMPDIR=$TMPDIR $SHELL
bzw.
xterm -e env TMPDIR=$TMPDIR mutt

-- 
Bitte in die Adressierung auch meinen|Please put my full name also into
Vor- u. Nachnamen stellen z.B.   |the recipient like
Friedhelm Waitzmann [EMAIL PROTECTED], (Friedhelm Waitzmann) [EMAIL 
PROTECTED],
Waitzmann, Friedhelm [EMAIL PROTECTED]


-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)