Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

root v1.0.0

7 views
Skip to first unread message

Andreas Wiese

unread,
Jan 30, 2002, 11:27:10 AM1/30/02
to
Hallo Netzgemeinde,

man verzeihe mir bitte das X-posting, ich weiss, dass sich das nicht
unbedingt gehoert.

Ich wollte nur folgendes sagen:

Ich habe hier etwas fuer jeden, der regelmaessig seine 'Identitaet'
auf seinem UNIX-aehnlichen System aendern muss. Ich habe ein kleines
Prograemmchen geschrieben, welches das moeglich macht ohne gezwungen
zu sein, jedes mal ein Passwort eingeben zu muessen. Das Programm
heisst 'root', ist jetzt wie gesagt brandneu in Version 1.0.0 und
steht auf http://www.root-for-everybody.de.vu zum
Download bereit. Da ich nicht weiss, wie ich's sonst einigermassen
bekannt machen kann (ich brauche Tester...) hier also ein Newsartikel.
Ich persoenlich bin der Meinung, dass das Programm ganz nuetzlich ist.
Ob jemand ohne weiters den Benutzer wechseln darf liest's aus seiner
Konfigurationsdatei, man kann auch nur einzelne Benutzer eintragen
(also so, dass derjenige, der das Programm ausfuehren darf - sprich
einen Eintrag in der Konfigurationsdatei hat - nicht gleich jeder
werden darf).
Die Originalidee kommt von Tim Pritlove (t...@ccc.de).

Also seht bitte mal vorbei...

TIA

awiese
--
--- \|/ ______ \|/
Andreas Wiese "@' / , . \ `@"
awiese....@web.de /__| \____/ |__\
http://www.root-for-everybody.de.vu \___U__/

Immo 'FaUl' Wehrenberg

unread,
Jan 30, 2002, 12:09:11 PM1/30/02
to
begin followup to the posting of Andreas Wiese:

> Ich habe ein kleines Prograemmchen geschrieben, welches das moeglich
> macht ohne gezwungen zu sein, jedes mal ein Passwort eingeben zu
> muessen. Das Programm heisst 'root', ist jetzt wie gesagt brandneu
> in Version 1.0.0 und steht auf http://www.root-for-everybody.de.vu
> zum Download bereit.

Mh, man suauth?

FaUl
end
This article does not support incompatible and broken newsreader.
--
"Gott ist tot." - Nietzsche
"Nietzsche ist tot." - Gott
"Tote reden nicht." - Django

Felix von Leitner

unread,
Jan 30, 2002, 12:29:38 PM1/30/02
to
Thus spake Andreas Wiese (awiese....@web.de):

> Ich habe hier etwas fuer jeden, der regelmaessig seine 'Identitaet'
> auf seinem UNIX-aehnlichen System aendern muss. Ich habe ein kleines
> Prograemmchen geschrieben, welches das moeglich macht ohne gezwungen
> zu sein, jedes mal ein Passwort eingeben zu muessen.
> Das Programm

Toll. Sicherheit wird abgeschafft, weil, braucht man nicht.
Außerdem verwirrt das die Mac-User nur.

> Die Originalidee kommt von Tim Pritlove (t...@ccc.de).

Na _so_ ein Zufall.

> Also seht bitte mal vorbei...

Nein.

Dieses nicht existierende "Problem" ist schon zig mal "gelöst" worden.
Niemand braucht noch eine "Lösung".

Rainer Weikusat

unread,
Jan 30, 2002, 12:39:12 PM1/30/02
to
awiese....@web.de (Andreas Wiese) writes:
> Ich wollte nur folgendes sagen:

-------------------
void *memset(void *s, int c, size_t n)
{
register int i;
int *t;
^^^^^^^^^^

t = s;

for(i = 0; i < n; i++)
t[n] = c;

return s;
}
--------------------

Wenn man den Fehler mal außen vorlässt, sähe das
in C so aus:

--------------------------
void *memset(void *p, int c, size_t n)
{
char *pp = (char *)p;

if (n) {
*pp = c;
while (--n) *++pp = c;
}

return p;
}
-------------------------

Spätestens an dieser Stelle muß man wirklich kotzen:

--------------
if(optind < argc)
{
int ind = 0;
int size = 0;
char *cmd = NULL;
command = 1;
arguments[1] = "-c";

for(ind = optind; ind < argc; ind++)
size += strlen(argv[ind]) + 1;

cmd = calloc(size+1, 1);
for(optind = optind; optind < argc; optind++)
strcat(strncat(cmd, argv[optind], size), " ");

arguments[2] = cmd;
}
-------------------------

Du gewinnst den Preis für die meisten überflüssigen Traversierungen
pro cm², die ich jemals gesehen habe.

> Ich persoenlich bin der Meinung, dass das Programm ganz nuetzlich
> ist.

Als abschreckendes Beispiel *schauder* ...

[x] Pascal verursacht Hirnschäden.

F'up2 poster

--
hoffentlich ist es beton

Markus Lausser

unread,
Jan 30, 2002, 2:01:17 PM1/30/02
to
On 30 Jan 2002 18:39:12 +0100, Rainer Weikusat wrote:

[...]

> Spätestens an dieser Stelle muß man wirklich kotzen:

Soso. Dann wuerde ich mal zum Arzt gehen, denn bei Fehlern
in Programmen ist dieses Verhalten nicht grade normal.

[...]

> Du gewinnst den Preis für die meisten überflüssigen Traversierungen
> pro cm², die ich jemals gesehen habe.

Dann bedank Dich wenigesten anstatt nur dumm anzumachen, wenn es fuer
Dich schon einen neue Erfahrung war.

> > Ich persoenlich bin der Meinung, dass das Programm ganz nuetzlich
> > ist.
>
> Als abschreckendes Beispiel *schauder* ...
>
> [x] Pascal verursacht Hirnschäden.

Noch so ein dummer Spruch. Lerne erstmal, wie man sich in der
Oeffentlichkeit benimmt.

Sorry, aber im moment gehen mir solche Antworten einfach auf den
Nerv. Es ist wirklich schlimm, was man in serioesen NGs so zu lesen
bekommt.

Markus.

Ingo van Lil

unread,
Jan 30, 2002, 2:39:23 PM1/30/02
to
Andreas Wiese <awiese....@web.de> wrote:

> Ich habe hier etwas fuer jeden, der regelmaessig seine 'Identitaet'
> auf seinem UNIX-aehnlichen System aendern muss. Ich habe ein kleines
> Prograemmchen geschrieben, welches das moeglich macht ohne gezwungen
> zu sein, jedes mal ein Passwort eingeben zu muessen.

Was genau kann das Programm, was "sudo" nicht kann?

Tschau,
Ingo

--
4. Chemnitzer Linux-Tag 9./10. Maerz 2002 http://www.tu-chemnitz.de/linux/tag

Rudolf Polzer

unread,
Jan 30, 2002, 2:28:54 PM1/30/02
to
Rainer Weikusat <weik...@students.uni-mainz.de> wrote:
> awiese....@web.de (Andreas Wiese) writes:
> > Ich wollte nur folgendes sagen:
>
> -------------------
> void *memset(void *s, int c, size_t n)
> {
> register int i;
> int *t;
> ^^^^^^^^^^
>
> t = s;
>
> for(i = 0; i < n; i++)
> t[n] = c;
>
> return s;
> }
> --------------------
>
> Wenn man den Fehler mal außen vorlässt, sähe das
> in C so aus:
>
> --------------------------
> void *memset(void *p, int c, size_t n)
> {
> char *pp = (char *)p;
>
> if (n) {
> *pp = c;
> while (--n) *++pp = c;
> }
>
> return p;
> }
> -------------------------

So würde man es in C machen:

while (n--)
*pp++ = c;

(macht man eigentlich nicht, da implementation defined für n=0 - aber
da das n danach nicht mehr gebraucht wird, geht das in Ordnung.)

Du hast es etwas handoptimiert - ein guter[tm] C-Compiler würde hier
identischen Code erzeugen. gcc leider nicht.

> Spätestens an dieser Stelle muß man wirklich kotzen:
>
> --------------
> if(optind < argc)
> {
> int ind = 0;
> int size = 0;
> char *cmd = NULL;
> command = 1;
> arguments[1] = "-c";
>
> for(ind = optind; ind < argc; ind++)
> size += strlen(argv[ind]) + 1;
>
> cmd = calloc(size+1, 1);
> for(optind = optind; optind < argc; optind++)
> strcat(strncat(cmd, argv[optind], size), " ");
>
> arguments[2] = cmd;
> }
> -------------------------
>
> Du gewinnst den Preis für die meisten überflüssigen Traversierungen
> pro cm², die ich jemals gesehen habe.

Dann sag ihm doch, wie es besser geht.

Für mich sieht es so aus, als wäre es gar nicht nötig, Speicher für
arguments[] zu holen - ein

arguments = argv + <Anzahl der Argumente davor>;

dürfte sogar schon reichen [Mist, wo ist man main, ich würde
gerne mal wissen, ob argv immer ein nullterminiertes Array von
nullterminierten Strings ist, denn nur dann gehts so einfach].

Ansonsten sollte der Rest mit execvp gehen.

--
Nigecha dame da. Nigecha dame da. Nigecha dame da. Nigecha dame da...


[Shinji in Neon Genesis Evangelion - english: "I mustn't run away"]

Stefan Stapelberg

unread,
Jan 30, 2002, 2:41:07 PM1/30/02
to
Markus Lausser wrote:

> Sorry, aber im moment gehen mir solche Antworten einfach auf den
> Nerv. Es ist wirklich schlimm, was man in serioesen NGs so zu lesen
> bekommt.

I second that. Ich dachte, wenn ich hier mal zwei, drei Jahre
Pause mach vom Usenet, sind die schlimmsten Hitzköppe mit ihrem
Studium fertig und mit Arbeit so zu, daß sie von selber ver-
schwinden, aber weit gefehlt. Ich empfehle eine Anstellung im
Technical Support/an einer Hotline, spätestens da lernt man
die minimalen Umgangsformen. Und kurioserweise erwischte ich
als ersten Artikel seit Jahren ausgerechnet auch noch ein
Posting des Herrn mit seinem Standard-Spruch, mit dem er
schon vor Jahren die gutmütigen Leser vertrieb, har har.

Nee, ich sag jetzt nicht, was ich geraucht hab :-)

Aber soviel war's, daß ich die nächsten fünf Dutzend Postings
aushalten werde, vielleicht kann man ja mit entsprechender
Beharrlichkeit das Niveau im Umgang mit Menschen wieder
auf die guten alten Zeiten des Dnet anheben hier ...

Jedenfalls bemüht darum, :-) :-) :-)
Stefan

--
Stefan Stapelberg RENT-A-GURU® INET-TV®/INET-RADIO® NETSTORE®
RAG3-RIPE Neuer Weg 16 · D-69118 Heidelberg · Germany
http://www.netstore.de/ Phone: +49.6221.803802 · Fax: +49.6221.803899
*PLONK* mich bitte, mir gehts so supergut, ich brauch mal nen Dämpfer

Bernd Petrovitsch

unread,
Jan 30, 2002, 3:06:33 PM1/30/02
to
Rudolf Polzer <AntiATFiel...@durchnull.de> wrote:
>dürfte sogar schon reichen [Mist, wo ist man main, ich würde
>gerne mal wissen, ob argv immer ein nullterminiertes Array von
>nullterminierten Strings ist, denn nur dann gehts so einfach].

Ersteres nicht, sonst brauchts du den "int argc" nicht.
Die einzelnene Argumente _sind_ null-terminiert, wie es sich für brave
Strings in C gehört.

Bernd
--
Bernd Petrovitsch Email : be...@gams.at
g.a.m.s gmbh Fax : +43 1 205255-900
Prinz-Eugen-Straße 8 A-1040 Vienna/Austria/Europe
LUGA : http://www.luga.at

Stefan Stapelberg

unread,
Jan 30, 2002, 3:08:43 PM1/30/02
to
Rudolf Polzer wrote:

> dürfte sogar schon reichen [Mist, wo ist man main, ich würde
> gerne mal wissen, ob argv immer ein nullterminiertes Array von
> nullterminierten Strings ist, denn nur dann gehts so einfach].

ja, kannst Dich darauf verlassen, daß argv[argc-1] immer der
Nullzeiger ist, sofern das Programm in einem hosted environment
(= OS-basiertes System) abläuft.

Im Beispiel sollte argument[0] auch noch den Kommandonamen
bekommen und natürlich jeder Wert _in_ argv[n] (nicht dessen
Adresse argv+optind) an die entsprechende Stelle in
argument[n+offset] zugewiesen werden.

--
Stefan Stapelberg RENT-A-GURU® INET-TV®/INET-RADIO® NETSTORE®
RAG3-RIPE Neuer Weg 16 · D-69118 Heidelberg · Germany
http://www.netstore.de/ Phone: +49.6221.803802 · Fax: +49.6221.803899

Todays spezial offer: Microsoft spel chekar vor sail, worgs grate!!

Stefan Stapelberg

unread,
Jan 30, 2002, 3:11:20 PM1/30/02
to
Bernd Petrovitsch wrote:
>
> Rudolf Polzer <AntiATFiel...@durchnull.de> wrote:
> >dürfte sogar schon reichen [Mist, wo ist man main, ich würde
> >gerne mal wissen, ob argv immer ein nullterminiertes Array von
> >nullterminierten Strings ist, denn nur dann gehts so einfach].
>
> Ersteres nicht, sonst brauchts du den "int argc" nicht.
> Die einzelnene Argumente _sind_ null-terminiert, wie es sich für brave
> Strings in C gehört.

Bernd, Du irrst, argc ist obsolete und man brauchte es zuletzt
in Unix Version 6. Mit der Einführung des (nicht abgesegneten)
dritten Parameters zu main (char **envp), der ebenfalls eine
NULL-terminierte Liste von Stringzeigern enthält, wurde der
Konsistenz wegen auch bei argv ein solcher spendiert.

Inzwischen fordert ANSI-C das (oh, ich wollt die Erwähnung
von ANSI vermeiden; zu spät :-) ;-)

jsaul

unread,
Jan 30, 2002, 3:40:56 PM1/30/02
to
Stefan Stapelberg <ste...@rent-a-guru.de> wrote:

> die minimalen Umgangsformen. Und kurioserweise erwischte ich
> als ersten Artikel seit Jahren ausgerechnet auch noch ein
> Posting des Herrn mit seinem Standard-Spruch, mit dem er
> schon vor Jahren die gutmütigen Leser vertrieb, har har.

Der hat nur abgegriffene Standard-Sprüche. So ein knappes halbes Dutzend.
Sowas landet bei mir gleich im KF, und gut ist.

> Nee, ich sag jetzt nicht, was ich geraucht hab :-)

Und ich sag jetzt nicht, was der gleiche Herr zum 11.9.2001 ins Netz
gespiehen hat. Das sei dem interessierten Leser zur Übung empfohlen...
Google sei Dank ;-)

Gruß, jsaul
--
Der Idiot, der Idiot,
schlug siebenhundertdreiundvierzigtausendzweihundertfünfundsechzig
Fliegen tot.

Stefan Stapelberg

unread,
Jan 30, 2002, 3:37:14 PM1/30/02
to
ich schrieb:

> ja, kannst Dich darauf verlassen, daß argv[argc-1] immer der

ups, argv[argc] natürlich.

Rudolf Polzer

unread,
Jan 30, 2002, 3:49:02 PM1/30/02
to
Stefan Stapelberg <ste...@rent-a-guru.de> wrote:
> Rudolf Polzer wrote:
>
> > dürfte sogar schon reichen [Mist, wo ist man main, ich würde
> > gerne mal wissen, ob argv immer ein nullterminiertes Array von
> > nullterminierten Strings ist, denn nur dann gehts so einfach].
>
> ja, kannst Dich darauf verlassen, daß argv[argc-1] immer der
> Nullzeiger ist, sofern das Programm in einem hosted environment
> (= OS-basiertes System) abläuft.

Du meinst natürlich argv[argc] - denn wenn das Programm ohne Parameter
gestartet wird, steht in argv[argc-1] == argv[0] üblicherweise der
Name des Programms.

> Im Beispiel sollte argument[0] auch noch den Kommandonamen
> bekommen und natürlich jeder Wert _in_ argv[n] (nicht dessen
> Adresse argv+optind) an die entsprechende Stelle in
> argument[n+offset] zugewiesen werden.

Es würde also funktionieren - aber wo steht das?

--
bash$ telnet post.strato.de 110 # POP3 at its best
[...]
LIST
+OK 0 messages, listing follows

Rudolf Polzer

unread,
Jan 30, 2002, 3:46:50 PM1/30/02
to
Bernd Petrovitsch <be...@frodo.gams.co.at> wrote:
> Rudolf Polzer <AntiATFiel...@durchnull.de> wrote:
> >dürfte sogar schon reichen [Mist, wo ist man main, ich würde
> >gerne mal wissen, ob argv immer ein nullterminiertes Array von
> >nullterminierten Strings ist, denn nur dann gehts so einfach].
>
> Ersteres nicht, sonst brauchts du den "int argc" nicht.
> Die einzelnene Argumente _sind_ null-terminiert, wie es sich für brave
> Strings in C gehört.

Schade. Heißt also, dass man argv nicht an execvp übergeben darf.
Dumm nur, dass Linux scheinbar immer eine solche Nullterminierung
durchführt. Wo ist das denn beschrieben?

Ich habe jedenfalls nur das ausprobiert:

| rpolzer@www42:~/c$ cat x.c
| #include <stdio.h>
|
| int main (int argc, char **argv)
| {
| printf ("0x%08X\n", argv[argc]);
| return 0;
| }
| rpolzer@www42:~/c$ make x
| cc x.c -o x
| rpolzer@www42:~/c$ ./x
| 0x00000000
| rpolzer@www42:~/c$ ./x hello world
| 0x00000000

Trotzdem geht die Kopiererei einfacher als vom OP beschrieben.

--
Ich hab Rei gemeint und Shinji gesagt.


mein Lästerschw^WSchwesterlein über Neon Genesis Evangelion

Bernd Petrovitsch

unread,
Jan 30, 2002, 4:03:54 PM1/30/02
to
Stefan Stapelberg <ste...@rent-a-guru.de> wrote:
>Inzwischen fordert ANSI-C das (oh, ich wollt die Erwähnung
>von ANSI vermeiden; zu spät :-) ;-)

Oooops, ACK, man lernt nicht aus :
http://www.vmunix.com/~gabor/c/draft.html
siehe "5.1.2.2.1 Program startup"

Felix von Leitner

unread,
Jan 30, 2002, 5:18:59 PM1/30/02
to
Thus spake Stefan Stapelberg (ste...@rent-a-guru.de):

> > Sorry, aber im moment gehen mir solche Antworten einfach auf den
> > Nerv. Es ist wirklich schlimm, was man in serioesen NGs so zu lesen
> > bekommt.
> I second that. Ich dachte, wenn ich hier mal zwei, drei Jahre
> Pause mach vom Usenet, sind die schlimmsten Hitzköppe mit ihrem
> Studium fertig und mit Arbeit so zu, daß sie von selber ver-
> schwinden, aber weit gefehlt.

Genau. Frechheit! Immer kommen hier ungebeten Schwachköpfe
reingelaufen und trampeln mal so richtig auf den Regulars rum, stehlen
anderen Leuten die Zeit und winseln dann auch noch rum, wenn man ihnen
sagt, was sie für Armleuchter sind. Das ist echt zum Kotzen.

> Ich empfehle eine Anstellung im Technical Support/an einer Hotline,
> spätestens da lernt man die minimalen Umgangsformen.

Und dann kommen da auch noch die Großhirnträger unter ihren Steinen
hervor und vergleichen bezahlte Scheiße-Fresser von Hotlines (selber
schuld, wer so einen Job macht) mit Usenet-Besuchern, die sich heir mit
Gleichgesinnten unterhalten wollen.

Darf ich fragen, was du bei rent-a-guru machst? Hausmeister?
Oder doch anspruchsvollere Jobs wie Fenster putzen?

> Und kurioserweise erwischte ich als ersten Artikel seit Jahren
> ausgerechnet auch noch ein Posting des Herrn mit seinem
> Standard-Spruch, mit dem er schon vor Jahren die gutmütigen Leser
> vertrieb, har har.

Stefan, _ich_ bin hier der gutmütige Leser, der trotz Jahren der
massiven Belästigung durch Knalltüten, Volldeppen und Trolle und dem
konsequenten Abzug der Leute, die etwas zu sagen gehabt hätten, immer
noch gutmütig genug ist, hier immer noch abzuhängen. Obwohl Leute wie
unser Mr. "ich hab gerade was erfunden! Es heißt sudo^H^H^H^Huid-tool!"
hier keine Mühe scheuen, meine Freude am Usenet größtmöglichst zu
vermiesen.

> Nee, ich sag jetzt nicht, was ich geraucht hab :-)

Das mußt du uns auch nicht sagen. Wir wollen das nicht wissen.
Rauch ruhig weiter. Aber die Dosis könntest du mal reduzieren.

Stefan Stapelberg

unread,
Jan 30, 2002, 5:25:29 PM1/30/02
to
Rudolf Polzer wrote:

> Schade. Heißt also, dass man argv nicht an execvp übergeben darf.
> Dumm nur, dass Linux scheinbar immer eine solche Nullterminierung
> durchführt. Wo ist das denn beschrieben?

Bei IRIX steht's in der Manpage zu exec, bei Linux sicher auch,
odda? :-)

argv is an array of character pointers to null-terminated strings.
These strings constitute the argument list available to the new
process image. By convention, argv must have at least one member,
and it should point to a string that is the same as `path' (or
its last component). argv is terminated by a null pointer.

Und genau das bekommt main() zum Frasse vorgeworfen.

Rudolf Polzer

unread,
Jan 30, 2002, 5:51:18 PM1/30/02
to
Stefan Stapelberg <ste...@rent-a-guru.de> wrote:
> Rudolf Polzer wrote:
>
> > Schade. Heißt also, dass man argv nicht an execvp übergeben darf.
> > Dumm nur, dass Linux scheinbar immer eine solche Nullterminierung
> > durchführt. Wo ist das denn beschrieben?
>
> Bei IRIX steht's in der Manpage zu exec, bei Linux sicher auch,
> odda? :-)

Nicht ganz.

> argv is an array of character pointers to null-terminated strings.
> These strings constitute the argument list available to the new
> process image. By convention, argv must have at least one member,
> and it should point to a string that is the same as `path' (or
> its last component). argv is terminated by a null pointer.
>
> Und genau das bekommt main() zum Frasse vorgeworfen.

Doch genau das steht leider nirgends. Wer sagt mir, dass das
OS nicht die argv[] strdup()liziert und das argv-Array selbst
neu aufbaut - und dabei die Nullterminierung entfernt (das ist
bei dem Wortlaut auch möglich)?

Die Frage wurde aber bereits beantwortet: ANSI C sieht vor,
dass argv ein nullterminiertes Array ist (also, dass
argv[argc]==NULL gilt), und damit ist die Sache 100%ig klar.
Dumm nur, dass es keine Manpage zu main() gibt. Da sollen
die sich mal ne Scheibe bei Mircosoft abschneiden - WinMain()
ist dokumentiert!

--
But most likely other e-mail programs like Eudora are not designed to
enable virus replication.

http://www.microsoft.com/mac/products/office/2001/virus_alert.asp

Stefan Stapelberg

unread,
Jan 30, 2002, 6:03:00 PM1/30/02
to
Felix von Leitner wrote:

> Genau. Frechheit! Immer kommen hier ungebeten Schwachköpfe
> reingelaufen und trampeln mal so richtig auf den Regulars rum, stehlen
> anderen Leuten die Zeit und winseln dann auch noch rum, wenn man ihnen
> sagt, was sie für Armleuchter sind. Das ist echt zum Kotzen.

Richtig. Bleib draussen, dann bist unter Dir.

> Und dann kommen da auch noch die Großhirnträger unter ihren Steinen
> hervor und vergleichen bezahlte Scheiße-Fresser von Hotlines (selber
> schuld, wer so einen Job macht) mit Usenet-Besuchern, die sich heir mit
> Gleichgesinnten unterhalten wollen.

Die Scheissefresser haben den Oberkotzbrocken wenigstens voraus,
daß sie im Umgang mit anderen keine vulgären Beleidigungen
brauchen, wenn ihnen die Argumente ausgehen. Das ist aller-
tiefstes Bauern-Niveau und lässt nicht nur an sozialer
Kompetenz zweifeln, sondern auch am IQ, wenn Du mich fragst.

> Darf ich fragen, was du bei rent-a-guru machst? Hausmeister?
> Oder doch anspruchsvollere Jobs wie Fenster putzen?

Ich mach alles, wenn's Dich interessiert, auch Hausmeister
und Fenster putzen. Es hilft, den Bezug zur Realität zu behalten,
wenn man mal wieder hinter dem Bildschirm hervorkriecht.

> Stefan, _ich_ bin hier der gutmütige Leser, der trotz Jahren der
> massiven Belästigung durch Knalltüten, Volldeppen und Trolle und dem
> konsequenten Abzug der Leute, die etwas zu sagen gehabt hätten, immer
> noch gutmütig genug ist, hier immer noch abzuhängen. Obwohl Leute wie
> unser Mr. "ich hab gerade was erfunden! Es heißt sudo^H^H^H^Huid-tool!"
> hier keine Mühe scheuen, meine Freude am Usenet größtmöglichst zu
> vermiesen.

Felix, als wir das Dnet aufgebaut haben, haben wir das für uns
Knalltüten, Volldeppen und Trolle gemacht. Nicht für Typen wie
Dich, die die Weisheit und Allwissenheit mit der Muttermilch
eingetütet bekommen haben.

Einen großen Geist macht übrigens aus, daß er sich auf die
intellektuelle Ebene seines Gegenübers herunterstufen kann,
also vulgo: anderen was erklären kann und sie nicht etwa als
Volltrottel bloßstellen muß.

> > Nee, ich sag jetzt nicht, was ich geraucht hab :-)
>
> Das mußt du uns auch nicht sagen. Wir wollen das nicht wissen.
> Rauch ruhig weiter. Aber die Dosis könntest du mal reduzieren.

Du bist doch derjenige, der mich das jedes zweites Posting fragt.
Jetzt willstes nimmer wissen. Ich sags trotzdem: Ich rauch Dunhill.

Probiers mal, vielleicht hilfts, Deine intellektuelle Kompetenz
in Kommunikation ein ganz klein wenig anzuheben. Oder plonk mich
doch einfach, haste doch angeblich schon längst gemacht.

Bwahahaha. Jetzt lieste mich wieder. Nicht mal konsequent biste.

--
Stefan Stapelberg RENT-A-GURU® INET-TV®/INET-RADIO® NETSTORE®
RAG3-RIPE Neuer Weg 16 · D-69118 Heidelberg · Germany
http://www.netstore.de/ Phone: +49.6221.803802 · Fax: +49.6221.803899

Felix von Leitner

unread,
Jan 30, 2002, 6:16:15 PM1/30/02
to
Thus spake Stefan Stapelberg (ste...@rent-a-guru.de):
> Einen großen Geist macht übrigens aus, daß er sich auf die
> intellektuelle Ebene seines Gegenübers herunterstufen kann,
> also vulgo: anderen was erklären kann und sie nicht etwa als
> Volltrottel bloßstellen muß.

Klar kann ich anderen was erklären. Ich muß aber nicht.
Ich will auch nicht.

Denn das kostet meine Zeit. Das ist ein endliches Gut. Das verschenke
ich nicht unlimitiert an jeden. Meine Hilfe muß man sich erarbeiten
oder man bezahlt mich dafür. Man kann sie sich gewöhnlich dadurch
erarbeiten, daß man zeigt, daß man sich bemüht hat, meine Zeit nicht
frivol zu verschwenden.

> Probiers mal, vielleicht hilfts, Deine intellektuelle Kompetenz
> in Kommunikation ein ganz klein wenig anzuheben.

Bitte? Ich soll mich vergiften, um einen von dir erfundenen Begriff zu
erhöhen? Dunhill muß offensichtlich mal dem Gesundheitsamt gemeldet
werden.

> Oder plonk mich doch einfach, haste doch angeblich schon längst
> gemacht. Bwahahaha. Jetzt lieste mich wieder. Nicht mal konsequent
> biste.

Natürlich nicht. Ich glaube daran, daß Leute lernfähig sind.
Besonders, wenn sie ein paar Monate weg waren.
Und es passiert ja auch ab und zu!

Felix

Stefan Stapelberg

unread,
Jan 30, 2002, 6:18:10 PM1/30/02
to
Rudolf Polzer wrote:

> > Und genau das bekommt main() zum Frasse vorgeworfen.
>
> Doch genau das steht leider nirgends. Wer sagt mir, dass das
> OS nicht die argv[] strdup()liziert und das argv-Array selbst
> neu aufbaut - und dabei die Nullterminierung entfernt (das ist
> bei dem Wortlaut auch möglich)?

Doch, in der IRIX-Manpage zu execv steht genau das, bei
Linux und anderen weiß ich es nicht:

When a C program is executed, it is called as follows:

int main (int argc, char *argv[], char *envp[]);

where argc is the argument count, argv is an array of
character pointers to the arguments themselves, and
envp is an array of character pointers
to the environment strings. As indicated, argc is at
least one, and the first member of the array points to
a string containing the name of the file.

Achtung: Die Formatierung von `argc', `argv' und `envp'
geht hier im Posting verloren, damit sind die Argumente
an ein execv(2) gemeint aus Sicht des den execv aus-
führenden Programmes und nicht die aus Sicht von main()
übergebenen Parameter - nur um das gleich zu klären.
Die execl-Variante spare ich mir mal aus Platzgründen,
aber auch für diese ist exakt beschrieben, wie arg0..
argn verwurstet werden, bevor's an main() übergeben wird.

> Dumm nur, dass es keine Manpage zu main() gibt. Da sollen
> die sich mal ne Scheibe bei Mircosoft abschneiden - WinMain()
> ist dokumentiert!

WinMain != main, bitte nicht immer Äpfel mit Birnen vergleichen.
Ein exec gibts meines Wissens nicht in Win-C, kann mich aber
irren, da ich um Windows meist nen sehr großen Bogen mache.

Stefan Stapelberg

unread,
Jan 30, 2002, 6:36:15 PM1/30/02
to
Felix von Leitner wrote:

> Denn das kostet meine Zeit. Das ist ein endliches Gut. Das verschenke
> ich nicht unlimitiert an jeden. Meine Hilfe muß man sich erarbeiten
> oder man bezahlt mich dafür. Man kann sie sich gewöhnlich dadurch
> erarbeiten, daß man zeigt, daß man sich bemüht hat, meine Zeit nicht
> frivol zu verschwenden.

Vollkommen legitim.

Aber wieso erklärst mir das? Hab ich Deine Zeit noch nicht frivol
genug verschwendet? Na dann werd ich mir noch etwas mehr Mühe geben.



> Bitte? Ich soll mich vergiften, um einen von dir erfundenen Begriff zu
> erhöhen? Dunhill muß offensichtlich mal dem Gesundheitsamt gemeldet
> werden.

Ja, mach mal. Vergiß nicht, uns zu informieren, was dabei
rausgekommen ist.

Philipp Hemker

unread,
Jan 30, 2002, 7:26:50 PM1/30/02
to
Rudolf Polzer <AntiATFiel...@durchnull.de> writes:
> Stefan Stapelberg <ste...@rent-a-guru.de> wrote:
>> Rudolf Polzer wrote:
>>
>> > Schade. Heißt also, dass man argv nicht an execvp übergeben darf.
>> > Dumm nur, dass Linux scheinbar immer eine solche Nullterminierung
>> > durchführt. Wo ist das denn beschrieben?
>>
>> Bei IRIX steht's in der Manpage zu exec, bei Linux sicher auch,
>> odda? :-)
>
> Nicht ganz.

Unter Linux findet man einen Verweis auf execve(2).

> Die Frage wurde aber bereits beantwortet: ANSI C sieht vor,
> dass argv ein nullterminiertes Array ist (also, dass
> argv[argc]==NULL gilt), und damit ist die Sache 100%ig klar.
> Dumm nur, dass es keine Manpage zu main() gibt. Da sollen
> die sich mal ne Scheibe bei Mircosoft abschneiden - WinMain()
> ist dokumentiert!

Was soll main() denn sein, wenn nicht C?
Wo dokumentiert Microsoft WinMain()?

bis dann,
philipp

--

Andreas Ferber

unread,
Jan 30, 2002, 8:11:07 PM1/30/02
to
* Rudolf Polzer <AntiATFiel...@durchnull.de> schrieb:

>
> Doch genau das steht leider nirgends. Wer sagt mir, dass das
> OS nicht die argv[] strdup()liziert und das argv-Array selbst
> neu aufbaut

Ohne jetzt konkret nachgesehen zu haben - ihm wird prinzipbedingt nichts
anderes übrigbleiben. Beim exec wird der alte virtuelle Adressraum des
Prozesses weggeschmissen und ein komplett neuer aufgebaut, dabei werden
natürlich auch sämtliche (Userspace-)Pointer ungültig.

Andreas
--
Andreas Ferber - dev/consulting GmbH - Bielefeld, FRG
---------------------------------------------------------
+49 521 1365800 - a...@devcon.net - www.devcon.net

Rudolf Polzer

unread,
Jan 31, 2002, 12:44:25 AM1/31/02
to
Philipp Hemker <phi...@phemker.de> wrote:
> Rudolf Polzer <AntiATFiel...@durchnull.de> writes:
> > Stefan Stapelberg <ste...@rent-a-guru.de> wrote:
> >> Rudolf Polzer wrote:
> >>
> >> > Schade. Heißt also, dass man argv nicht an execvp übergeben darf.
> >> > Dumm nur, dass Linux scheinbar immer eine solche Nullterminierung
> >> > durchführt. Wo ist das denn beschrieben?
> >>
> >> Bei IRIX steht's in der Manpage zu exec, bei Linux sicher auch,
> >> odda? :-)
> >
> > Nicht ganz.
>
> Unter Linux findet man einen Verweis auf execve(2).

Schon klar - aber der zitierte Absatz existiert nicht in der Manpage.
Dachte ich zumindest - er steht nämlich ganz oben. Hätte doch mal
mit /main greppen sollen.

> > Die Frage wurde aber bereits beantwortet: ANSI C sieht vor,
> > dass argv ein nullterminiertes Array ist (also, dass
> > argv[argc]==NULL gilt), und damit ist die Sache 100%ig klar.
> > Dumm nur, dass es keine Manpage zu main() gibt. Da sollen
> > die sich mal ne Scheibe bei Mircosoft abschneiden - WinMain()
> > ist dokumentiert!
>
> Was soll main() denn sein, wenn nicht C?

Und? Warum gibt es dann Manpages zu strcpy, sprintf, strncat - was
sollen _die_ anderes sein als C? Wer bezahlt schon die relativ teuren
Dokumente vom ANSI - außer den Compilerprogrammierern vielleicht?

> Wo dokumentiert Microsoft WinMain()?

http://msdn.microsoft.com/library/en-us/winui/windows-64ku.asp?frame=true

--
Quatsch wird immer quätscher, bis er quietscht.

Rainer Weikusat

unread,
Jan 31, 2002, 5:27:16 AM1/31/02
to
lau...@sauron.forwiss.uni-passau.de (Markus Lausser) writes:
> On 30 Jan 2002 18:39:12 +0100, Rainer Weikusat wrote:
> > Spätestens an dieser Stelle muß man wirklich kotzen:
>
> Soso. Dann wuerde ich mal zum Arzt gehen, denn bei Fehlern
> in Programmen ist dieses Verhalten nicht grade normal.

Ich würde Dir stattdessen raten, eine Weile lang mit den
entsprechenden Ausschnitten der glibc-Dokumentation darüber zu
meditieren.

Eine 'gcc -S'-Ausgabe des inkriminierten Code-Schnipsels könnte sich
als zusätzliches Quellenmaterial hilfreich erweisen.

Ich formuliere das mal aus dem Kopf um:

p = argv;
size = 0;
while (pp = *p) {
while (*pp) {
++size;
++pp;
}
++p;
}

[...]

p = argv;
*d = **p;
dd = d;
for (pp = *p + 1; *pp; ++pp) *++dd = *pp;
while (pp = *++p) {
for (dd = d; *d; ++d);
while (*pp) *dd++ = *pp++;
for (dd = d; *dd; ++dd);
*dd = ' ';
++p;
}

Grauenhaft.

Der buffer overflow wg Unverständnis im memset-Ersatz kommt dann als
Sahnehäubchen gratis mit.

Rainer Weikusat

unread,
Jan 31, 2002, 5:28:47 AM1/31/02
to
Stefan Stapelberg <ste...@rent-a-guru.de> writes:
> I second that. Ich dachte, wenn ich hier mal zwei, drei Jahre
> Pause mach vom Usenet, sind die schlimmsten Hitzköppe mit ihrem
> Studium fertig und mit Arbeit so zu, daß sie von selber ver-
> schwinden, aber weit gefehlt. Ich empfehle eine Anstellung im
> Technical Support/an einer Hotline, spätestens da lernt man
> die minimalen Umgangsformen.

Dann wirds aber allmählich Zeit.

Rainer Weikusat

unread,
Jan 31, 2002, 5:36:48 AM1/31/02
to
Rainer Weikusat <weik...@students.uni-mainz.de> writes:

[...]

Nachtrag: Tut mir leid für den Inhalt, aber mir ist grade
nicht nach sinnlosem Rumgeflame in der
Fäkalklasse III :-)

F'up2 poster

Rudolf Polzer

unread,
Jan 31, 2002, 5:49:40 AM1/31/02
to
Rainer Weikusat <weik...@students.uni-mainz.de> wrote:
> lau...@sauron.forwiss.uni-passau.de (Markus Lausser) writes:
> > On 30 Jan 2002 18:39:12 +0100, Rainer Weikusat wrote:
> > > Spätestens an dieser Stelle muß man wirklich kotzen:
> >
> > Soso. Dann wuerde ich mal zum Arzt gehen, denn bei Fehlern
> > in Programmen ist dieses Verhalten nicht grade normal.
>
> Ich würde Dir stattdessen raten, eine Weile lang mit den
> entsprechenden Ausschnitten der glibc-Dokumentation darüber zu
> meditieren.
>
> Eine 'gcc -S'-Ausgabe des inkriminierten Code-Schnipsels könnte sich
> als zusätzliches Quellenmaterial hilfreich erweisen.

Nein, nicht gcc -S. gcc -O9 -march=<MinimalerProzessor> -m<DeinProzessor>
und wahlweise mit -Os statt -O9.

Lt. Bjarne Stroustrup sollte ein guter C- und C++-Compiler eine gewisse
Eigenintelligenz besitzen - Stichwort "Optimizer". Leider kenne ich
keinen Compiler, der sowas bietet.

Aber zumindest

while (*p++ = *q++);

und

while (1)
{
int was = *p = *q;
++p;
++q;
if (!was)
break;
}

sollten identischen Code ergeben. Wie gesagt, sollten.

--
#!/usr/bin/perl -- Exercise: prove _or_ disprove that _all_ digits
############################ displayed are 1! s/^/4711081542426/g;
use strict;$|=@_=$0=2;for(;;){do{++$0}while('@'x$0)=~/^(..+)\1+$/;
push@_,$0;for((2-@_)..0){$_[-$_]=abs($_[-$_]-$_[1-$_])}print$_[0]}

Stefan Stapelberg

unread,
Jan 31, 2002, 6:06:15 AM1/31/02
to
Rainer Weikusat wrote:
>
> Stefan Stapelberg <ste...@rent-a-guru.de> writes:

> > schwinden, aber weit gefehlt. Ich empfehle eine Anstellung im
> > Technical Support/an einer Hotline, spätestens da lernt man
> > die minimalen Umgangsformen.
>
> Dann wirds aber allmählich Zeit.

Find ich auch. Ich wüsst ne freie Stelle für Dich.

--
Stefan Stapelberg RENT-A-GURU® INET-TV®/INET-RADIO® NETSTORE®
RAG3-RIPE Neuer Weg 16 · D-69118 Heidelberg · Germany
http://www.netstore.de/ Phone: +49.6221.803802 · Fax: +49.6221.803899

Stefan Stapelberg

unread,
Jan 31, 2002, 6:11:52 AM1/31/02
to
Rudolf Polzer wrote:

>
> Und? Warum gibt es dann Manpages zu strcpy, sprintf, strncat - was
> sollen _die_ anderes sein als C? Wer bezahlt schon die relativ teuren

Ganz einfach: Das Verhalten von strcpy & friends ist festgelegt,
main() darfste selber schreiben. Das Interface ist dokumentiert,
wie Du gesehen hast. An der Stelle, an der es Sinn macht IMHO.

> Dokumente vom ANSI - außer den Compilerprogrammierern vielleicht?

Neugierige Leute wie wir, die wissen wollen, ob argv[argc]
immer NULL sein muß?

Falk Hueffner

unread,
Jan 31, 2002, 6:46:36 AM1/31/02
to
Rudolf Polzer <AntiATFiel...@durchnull.de> writes:

> Lt. Bjarne Stroustrup sollte ein guter C- und C++-Compiler eine gewisse
> Eigenintelligenz besitzen - Stichwort "Optimizer". Leider kenne ich
> keinen Compiler, der sowas bietet.
>
> Aber zumindest
>
> while (*p++ = *q++);
>
> und
>
> while (1)
> {
> int was = *p = *q;
> ++p;
> ++q;
> if (!was)
> break;
> }
>
> sollten identischen Code ergeben. Wie gesagt, sollten.

Ich sehe nicht ein, wieso; meines Erachtens reicht es, wenn der
erzeugte Code gleich schnell ist. Da derartige Schleifen durch den
Speicherdurchsatz begrenzt sind, duerfte dies den meisten Compilern
gelingen.

Falk

P.S.: gcc erzeugt bei mir exakt identischen Code fuer die beiden
Schleifen.

Andreas Wiese

unread,
Jan 31, 2002, 10:33:36 AM1/31/02
to
In article <3c58...@fefe.de>, Felix von Leitner wrote:

[snip... die Ansichten eines echten Profis]

> unser Mr. "ich hab gerade was erfunden! Es heißt sudo^H^H^H^Huid-tool!"

[snip... noch mehr Ansichten und Selbstbeweihraeucherung]

Deine Ueberheblichkeit nutzt meinem Willen zu lernen nichts. Sie bringt mich
nicht weiter - scheinbar aber dich :-/ . Vielleicht bist du aber nicht so
gut, wie du von dir denkst, denn sonst haettest du es nicht noetig,
wissensdurstige Anfaenger niederzumachen. Oder du bist fachlich gut, dabei
aber menschlich auf der Strecke gelieben???
Ich moechte spaeter Informatik und nicht Psychologie studieren, also befasse
ich mich weiter mit der Verbesserung meines Programmes und nicht mit deinem
Charakter.

Mit (nicht freundlichen!) Gruessen...

"Mr. 'ich hab gerade was erfunden! Es heisst sudo^H^H^H^Huid-tool!'"

BTW: Mir war bis jetzt gar nicht bewusst, dass sudo nicht SUID laeuft. Tja,
man lernt halt wirklich nie aus >:-(
--
--- \|/ ______ \|/
Andreas Wiese "@' / , . \ `@"
awiese....@t-online.de /__| \____/ |__\
http://www.root-for-everybody.de.vu \___U__/

Janusch Lisson

unread,
Jan 31, 2002, 11:10:31 AM1/31/02
to
> Deine Ueberheblichkeit nutzt meinem Willen zu lernen nichts. Sie bringt
mich
> nicht weiter - scheinbar aber dich :-/ . Vielleicht bist du aber nicht so
> gut, wie du von dir denkst, denn sonst haettest du es nicht noetig,
> wissensdurstige Anfaenger niederzumachen. Oder du bist fachlich gut, dabei
> aber menschlich auf der Strecke gelieben???
> Ich moechte spaeter Informatik und nicht Psychologie studieren, also
befasse
> ich mich weiter mit der Verbesserung meines Programmes und nicht mit
deinem
> Charakter.
Ignoriere ruhig die Aussagen der Besserwisser, die haben auch nicht besser
angefangen -> Jeder war mal ein Anfänger.
Leider ist dieses "Auslachen/ schlecht machen" von Anfänger in deutschen
Newsgroups sehr oft zu finden, irgendwie versucht jeder der Beste zu sein,
dennoch sind es meistens die "Möchtegern-Profis" die selber nicht wissen wie
man es besser macht.

Also Kopf hoch, aller Anfang ist schwer...
Gruß,
Janusch


Philipp Hemker

unread,
Jan 31, 2002, 11:40:52 AM1/31/02
to
Rudolf Polzer <AntiATFiel...@durchnull.de> writes:

>> > Die Frage wurde aber bereits beantwortet: ANSI C sieht vor,
>> > dass argv ein nullterminiertes Array ist (also, dass
>> > argv[argc]==NULL gilt), und damit ist die Sache 100%ig klar.
>> > Dumm nur, dass es keine Manpage zu main() gibt. Da sollen
>> > die sich mal ne Scheibe bei Mircosoft abschneiden - WinMain()
>> > ist dokumentiert!
>>
>> Was soll main() denn sein, wenn nicht C?
>
> Und? Warum gibt es dann Manpages zu strcpy, sprintf, strncat -

Weil du sie installiert hast?

> was sollen _die_ anderes sein als C?

"Library calls (functions within system libraries)"

Ah, irgendwo im msdn... analog für u.a. Linux bspw. dort:

<http://www.gnu.org/manual/glibc-2.2.3/html_chapter/libc_25.html>

$ info libc "Program Arguments"

bis dann,
philipp

--

Gunnar Ritter

unread,
Feb 1, 2002, 12:31:10 PM2/1/02
to
Janusch Lisson <janusch...@froebus.de> wrote:

> Jeder war mal ein Anfänger.

Sicher. Aber nicht jeder hat das auf dem Rücken anderer im
Usenet austragen lassen.

Gunnar

0 new messages