Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
gefährliche funktion

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - C
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
anfänger
Gast





BeitragVerfasst am: 01. Sep 2003 14:37   Titel: gefährliche funktion

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.

code:

/* 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;
}


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 Smile, ist übrigens echt super

vielleicht kommt das ja noch in den nächsten lektionen Smile

danke
 

esnappap



Anmeldungsdatum: 25.08.2003
Beiträge: 47

BeitragVerfasst am: 01. Sep 2003 15:32   Titel: Re: gefährliche funktion

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


Zuletzt bearbeitet von esnappap am 01. Sep 2003 15:32, insgesamt 2-mal bearbeitet
 
Benutzer-Profile anzeigen Private Nachricht senden

MoMo
Gast





BeitragVerfasst am: 01. Sep 2003 17:02   Titel: Re: gefährliche funktion

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
 

anfänger
Gast





BeitragVerfasst am: 01. Sep 2003 18:09   Titel: Re: gefährliche funktion

hi
(Probiers doch ruhig mal aus!) ...... würde ich ja gerne Smile, 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 Smile
danke
 

esnappap



Anmeldungsdatum: 25.08.2003
Beiträge: 47

BeitragVerfasst am: 01. Sep 2003 18:46   Titel: Re: gefährliche funktion

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


Zuletzt bearbeitet von esnappap am 01. Sep 2003 18:46, insgesamt 1-mal bearbeitet
 
Benutzer-Profile anzeigen Private Nachricht senden

anfänger
Gast





BeitragVerfasst am: 01. Sep 2003 19:20   Titel: Re: gefährliche funktion

hi
du hast recht, es geht auch wirklich so.

code:
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:

 

esnappap



Anmeldungsdatum: 25.08.2003
Beiträge: 47

BeitragVerfasst am: 02. Sep 2003 22:36   Titel: Re: gefährliche funktion

>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 Smile


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
 
Benutzer-Profile anzeigen Private Nachricht senden

dave_g22
Gast





BeitragVerfasst am: 03. Sep 2003 3:00   Titel: Re: gefährliche funktion

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
Gast





BeitragVerfasst am: 05. Sep 2003 0:19   Titel: Re: gefährliche funktion

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 Smile
cui
 

Udo M.
Gast





BeitragVerfasst am: 07. Sep 2003 14:06   Titel: Re: gefährliche funktion

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
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - C Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy