Du bist nicht angemeldet.

Werbeanzeige

Black-Panther

Alter Hase

  • »Black-Panther« ist der Autor dieses Themas

Beiträge: 1 445

Wohnort: Innsbruck

  • Private Nachricht senden

1

04.04.2006, 20:47

secure Code

Hallo!

Ich wollte nur mal fragen, für welche Funktionen es eigentlich eine secure-Variante gibt, und was genau (technisch gesehen) der Unterschied zwischen denen und normalen ist!
Gibt es zB secure-Functions für wcscpy, wcscmp, swprintf, swscanf?
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Anonymous

unregistriert

2

04.04.2006, 21:03

wenn du sprintf benutzt, wird dir direkt die richtige alternative genannt: sprintf_s

Vorteil ist: Du übergibst als parameter die maximale Schreibgröße des Zielpuffers, wodurch sich ein bufferoverflow verhinder läßt. So kann es z. B. nicht mehr passieren das du einen 33 Zeichen-String in einem 32 Array reinstopfen kannst. Normales sprintf würde Dir mit einen Absturz des Programms danken.

Die MSDN wird Dir dort sehr weiterhelfen:
http://msdn2.microsoft.com/en-us/library/ce3zzk1k.aspx
http://msdn2.microsoft.com/en-us/library/8ef0s5kh(VS.80).aspx
http://msdn2.microsoft.com/en-us/library/wd3wzwts(VS.80).aspx

Black-Panther

Alter Hase

  • »Black-Panther« ist der Autor dieses Themas

Beiträge: 1 445

Wohnort: Innsbruck

  • Private Nachricht senden

3

14.04.2006, 16:46

Was muss ich includieren, damit ich die Secure-Functions zur Verfügung habe? Weil meine lokale MSDN kennt sie nicht, jedenfalls find ich nichts unterm Suchbegriff "swprintf_s" oder "sprintf_s"...
Ich bin jetzt nämlich endlich auf VS2005 umgestiegen, und möchte nun natürlich alle unsicheren Funktionen in sichere umwandeln! Nur dazu müsste ich die Parameter der sicheren wissen... :(
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Anonymous

unregistriert

4

14.04.2006, 16:53

Black-Panther
Die Parameter bekommst Du ganz einfach zur Laufzeit, indem Du in Deinem Editor :: schreibst.

Für die Benutzung reicht eigentlich die normalen Header wie z. B. <windows.h> also nichts besonderes. :)

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

5

14.04.2006, 16:57

Soweit ich das erkennen kann sind beide Versionen in stdio.h, die UNICODE Versionen auch in wchar.h

Black-Panther

Alter Hase

  • »Black-Panther« ist der Autor dieses Themas

Beiträge: 1 445

Wohnort: Innsbruck

  • Private Nachricht senden

6

14.04.2006, 17:01

AHHHHHHHHHHHH! Endlich gefunden! Danke!
Nur noch eine kleine Frage, der 2. Parameter also das "Size of buffer in wide characters." ist das die Anzahl der Buchstaben (mit oder ohne L'\0'??), welche MAXIMAL kopiert werden darf? Praktisch die größe des Destination-Strings geteilt durch die Größe des Datentyps??
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Anonymous

unregistriert

7

14.04.2006, 17:21

Korrekt

Black-Panther

Alter Hase

  • »Black-Panther« ist der Autor dieses Themas

Beiträge: 1 445

Wohnort: Innsbruck

  • Private Nachricht senden

8

15.04.2006, 13:46

so weit so gut... Ich habe jetzt ALLE unsecure-Functions durch secure ersetzt, doch leider kommen beim kompilieren immer noch folgende Warnungen:

Zitat


Warning 9 warning C4995: 'wcscpy': name was marked as #pragma deprecated d:\microsoft visual studio 8\vc\include\cwchar 39
Warning 8 warning C4995: 'wcscat': name was marked as #pragma deprecated d:\microsoft visual studio 8\vc\include\cwchar 37
Warning 7 warning C4995: 'vswprintf': name was marked as #pragma deprecated d:\microsoft visual studio 8\vc\include\cwchar 35
Warning 3 warning C4995: 'vsprintf': name was marked as #pragma deprecated d:\microsoft visual studio 8\vc\include\cstdio 40
Warning 6 warning C4995: 'swprintf': name was marked as #pragma deprecated d:\microsoft visual studio 8\vc\include\cwchar 34
Warning 5 warning C4995: 'strcpy': name was marked as #pragma deprecated d:\microsoft visual studio 8\vc\include\cstring 21
Warning 4 warning C4995: 'strcat': name was marked as #pragma deprecated d:\microsoft visual studio 8\vc\include\cstring 20
Warning 2 warning C4995: 'sprintf': name was marked as #pragma deprecated d:\microsoft visual studio 8\vc\include\cstdio 37
Warning 1 warning C4995: 'gets': name was marked as #pragma deprecated d:\microsoft visual studio 8\vc\include\cstdio 33


Wenn jetzt jemand sagen möchte, dass ich scheinbar irgendwo doch noch unsecure-Functions verwende, so kann ich dem sagen, dass das 1. 100&ig nicht zutrifft, und 2. Funktionen wie gets() oder strcat oder wcscat von mir noch NIE verwendet wurden!
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

9

15.04.2006, 18:54

Google? MSDN?

Black-Panther

Alter Hase

  • »Black-Panther« ist der Autor dieses Themas

Beiträge: 1 445

Wohnort: Innsbruck

  • Private Nachricht senden

10

15.04.2006, 23:35

Hab ich schon nachgeschaut (MSDN)...
Im Prinzip wollte ich nur wissen, was noch alles diese Warnung auslösen kann? Was weiß ich, zB eingebundene Header? Libs? o.ä.?
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Werbeanzeige