"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

c++ probs mit zeigern!

LakeBodom 01.10.2002 - 14:05 2641 39
Posts

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11338
statt sprintf wäre z.B. snprintf besser.

Neo-=IuE=-

Here to stay
Registered: Jun 2002
Location: Berndorf, NÖ
Posts: 3232
gets hat mit längern zeilen als der buffer kein problem, der schneidets halt ab, nur bei scanf hast a problem damit ;)

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
bei gets kann man wirklich nicht angeben, wie lang der puffer ist, aber drum nimmt man ja auch fgets.

du wirst es nicht glauben, auch mit printf kann man recht leicht sicherheitslücken produzieren (abgesehen vom puffer überschreiben, das schon angesprochen wurde). nämlich dann, wenn du einen vom user eingegebenen string als erstes argument (format string) verwendest. da gibt's nämlich böse dinge, mit denen man integers im speicher überschreiben kann.

es ist zwar eine mühsame sache, so einen exploit aufzubauen, aber es gibt auch hierfür genug beispiele.

Vir@s

Code Monkey
Registered: Nov 2000
Location: Wien
Posts: 730
Du kannst für so ziemlich alles exploits aufbauen, überall gibt es sicherheitslücken, nur printf wird weit verwendet, auch in der UNIX Welt, aber wahrscheinlich irren sich die alle, und nur ihr habt recht.....

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Gegen die Verwendung von printf ist nichts zu sagen, solang der erste Parameter (format string) hardcoded ist.

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11338
Zitat von Ringding
Gegen die Verwendung von printf ist nichts zu sagen, solang der erste Parameter (format string) hardcoded ist.

...UND der Ausgabepuffer garantiert lang genug ist für den längstmöglichen formatierten String.

EDIT: natürlich gilt das für sprintf...

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
jo, das ist eh klar. hab ich weiter oben eh schon geschrieben ;)

Vir@s

Code Monkey
Registered: Nov 2000
Location: Wien
Posts: 730
Des ist aber dann sache vom Programmierer und nicht vom C würd ich mal sagen.

Und Format strings nicht hardcoded machen ist sowieso oberkill, außer du baust eine saubere Überprüfung ein.

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11338
Zitat von Vir@s
Und Format strings nicht hardcoded machen ist sowieso oberkill, außer du baust eine saubere Überprüfung ein.

Wir hattens in den Win32 Resources, wegen der Übersetzung. Blöd ist nur, wenn der Übersetzer irrtümlich ein %s entfernt oder z.B. %d und %s vertauscht, weil die Reihenfolge der Einsetzvariablen in der Fremdsprache anders sein soll. :)

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Programmuebersetzungen sind soundso ein Graus. Fuer die Reihenfolgenvertauschung gibt's FormatMessage.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz