gefährliche funktion

Post Reply
Message
Author
anfänger

gefährliche funktion

#1 Post by anfänger »

hallo leute
ich versuche gerade mal ein wenig c zu lernen. ich habe null komma null ahnung von programmieren, aber jeder anfang ist schwer.
hier ein beispielprogramm das ich abtippen soll und dann soll es so laufen, so steht es geschrieben.

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
/* EX2-5.c */
#include <stdio.h>
#include <string.h>
int main ()
{
char buffer [256];
printf ( " Bitte Name eingeben und <Eingabe> drücken:
");
gets (buffer);

printf ( "
Ihr Name enthält %d Zeichen (inkl. Leerzeichen).",
strlen ( buffer ) );

return 0;
}
</font><hr></pre></blockquote>
dann der fehlercode beim compilieren

In function `main':
: the `gets' function is dangerous and should not be used.

mag ja sein das es gefährlich sein soll wie da steht, doch ich bin noch nicht so weit um das zu verstehen, ist mein zweiter tag ( c programmieren in 21 tagen ( als pdf ) )
als root geht es auch nicht, wie kriege ich das programm dazu das es tut was es tuen soll?, das soll ich ja herausfinden *lol*
wenn das alles zu gefährlich ist dann habe ich glaub ich ein problem *gg*
html war irgendiwe einfacher mit selfhtml :), ist übrigens echt super

vielleicht kommt das ja noch in den nächsten lektionen :)

danke

esnappap
Posts: 47
Joined: 25. Aug 2003 8:41

Re: gefährliche funktion

#2 Post by esnappap »

Hallo,
überleg mal was passiert wenn Du zb 300 Zeichen -(denke mal an
"buffer[256]") - als name eingibts . (Probiers doch ruhig mal aus!)

So sollte man nicht Programieren =)

ps: Schau Dir mal fgets an.

mfg
Last edited by esnappap on 01. Sep 2003 15:32, edited 2 times in total.

MoMo

Re: gefährliche funktion

#3 Post by MoMo »

gets() dürfte in der Hitliste der "Bugmacher" ganz oben stehen. Wie schon esanppap geschrieben hat, ist die Funktionin der Tat "gefährlich" und eigent sich sehr gut dafür Buffer-Überläufe und Sicherheitslücken zu programmieren <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">

anfänger

Re: gefährliche funktion

#4 Post by anfänger »

hi
(Probiers doch ruhig mal aus!) ...... würde ich ja gerne :), aber kompilieren geht nicht. also wenn das wirklich so schlecht ist dann frage ich mich langsam ob ich nicht das falsche "buch" besitze. wer weiss was die mir da noch zeigen wollen, ich persönlich kann das ja (noch) nicht wissen. ich finde das schlecht das man sowas falsches lernt!

morgen schaue ich mir mal fgets an

gruss
ps: kennt jemand ein anderes buch zum lernen von c? als C-Programmierung für Linux in 21 Tagen, kann auch c++ sein.
will kein buffer-underrun progger werden :)
danke

esnappap
Posts: 47
Joined: 25. Aug 2003 8:41

Re: gefährliche funktion

#5 Post by esnappap »

Hallo,
auch wenn Du gets nimmst sollte sich das listing compilieren lassen.

michael@linux:~> gcc test.c
/tmp/ccI33RQW.o(.text+0x2e): In function `main':
: the `gets' function is dangerous and should not be used.
michael@linux:~>./a.out
Bitte Name eingeben und <Eingabe> drücken: ddddddddddddddddddddddddddd
Ihr Name enthält 27 Zeichen (inkl. Leerzeichen).

mfg
Last edited by esnappap on 01. Sep 2003 18:46, edited 1 time in total.

anfänger

Re: gefährliche funktion

#6 Post by anfänger »

hi
du hast recht, es geht auch wirklich so.

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">hulk@linux:~/Documents/test> gcc -o name name.c
/tmp/ccIzI6p1.o(.text+0x2e): In function `main':
: the `gets' function is dangerous and should not be used.
hulk@linux:~/Documents/test> ./name
Bitte Name eingeben und <Eingabe> drücken:
</font><hr></pre></blockquote>

esnappap
Posts: 47
Joined: 25. Aug 2003 8:41

Re: gefährliche funktion

#7 Post by esnappap »

>ps: kennt jemand ein anderes buch zum lernen von c? als C-Programmierung für Linux
>in 21 Tagen, kann auch c++ sein.will kein buffer-underrun progger werden :)


Es ist zwar nicht ganz so schön wenn da kein Vermerk ist welcher nen Hinweis gibt gets()
nicht mehr zu benutzen, (ich gehe jetzt mal davon aus das da keiner ist denn sonnst
hättest Du ihn ja gelesen =) ) aber ich denke der ist nicht da um den einstig etwas
leichter zu halten.

Wenn Du ansonsten gut mit dem Buch klar kommst würde ich an deiner stelle auch dabei
bleiben. Später kannst Du dich immer noch Schlau machen um möglichst solchen Code zu
vermeiden, dann ist solches Wissen auch besser zu vermitteln.

mfg

dave_g22

Re: gefährliche funktion

#8 Post by dave_g22 »

Ich habe mit dem Buch C++ Grundlagen von Willms gelernt, obwohl ich sagen muss, das das Buch zum anfang wurscht is, hauptsache der Wille is da. Für C - Programmierung könnt ich dir C - Programmierung unter Linux empfehlen.

CU
Dave

anfänger

Re: gefährliche funktion

#9 Post by anfänger »

hallo
ok, ich werde mal danach suchen. ich denke mal ich sollte die sache auch ein wenig besonnener angehen. ich werde mir auch ein buch über cpp zulegen.
in 20 jahren wenn ich das dann kann, werde ich vielleicht mal mitreden können.

danke für die tips :)
cui

Udo M.

Re: gefährliche funktion

#10 Post by Udo M. »

Schlimm ist es doch, daß gerade Anfängerliteratur und Programmierkurse an Universitäten ohne jegliche Warnung "gets-verseucht" sind. Da wird auf allerlei andere Programmiertugenden hingewiesen, aber gleichzeitig ein Übel wie `gets' propagiert.
Wenn dann vielleicht die Gefahr erkannt wird, kommt der lernende aber auch zu dem Schluß, daß sein buffer ausreicht: eine (DOS-)Kommandozeile kann halt nur ?? Zeichen lang sein, ein Netzwerkpacket hat max. ?? Bytes, der Datensatz ist eben nur so groß, ...

Alles Lüge und Glatteis.

Udo

Post Reply