Hollosi Information eXchange /HIX/
HIX CODER 1782
Copyright (C) HIX
2003-03-22
Új cikk beküldése (a cikk tartalma az író felelőssége)
Megrendelés Lemondás
1 Visual C dll + Visual Basic (mind)  40 sor     (cikkei)
2 Visual C dll + Visual Basic (mind)  20 sor     (cikkei)

+ - Visual C dll + Visual Basic (mind) VÁLASZ  Feladó: (cikkei)

Hi!

On Fri, 21 Mar 2003, HIX CODER wrote:

> A kerdesem a kovetkezo: hogyan lehet atadni basicbol egy stringet a
> vc-ben irt dll-nek ? (ahol pointereket hasznalok semmi mfc-s dolog)

Remelem fejbol irtad.

> int	_stdcall Pelda(char *_text, int _tsize)
> {
> 	FILE	*file;
> 	char    buffer[5];
> 
> 	file = fopen("debug.txt", "w");
> 	fprintf(file,"Pelda(%s,%d)\n",_text,_tsize);
> 
> 	for (int i=0; i<=tsize; i++) {
> 		buffer[i++] = *_text;

Buffer overflow bug egyik klasszikus esete: a buffer fixen allokalt (most
eppen 5 meretu, de ez mind1), de _tsize-t hivhatjak ennel nagyobbal. Ezert
kell egy hatar ellenorzes!!!

Arrol nem is beszelve, hogy i-t duplan noveled: a for-ban es az
indexeleskor is. Igy _tsize=5 eseten szepen "befestesz" egy reszt a
buffer-en tuli memoriateruleten.

Nem szall ez igy el? Mukodik egyalatalan?

Udv.

--

tocsa

 ---
| email:                        |
| homepage:  http://www.inf.bme.hu/~tocsa       |
 ---
+ - Visual C dll + Visual Basic (mind) VÁLASZ  Feladó: (cikkei)

Meg valami...

> > int	_stdcall Pelda(char *_text, int _tsize)

> > 	for (int i=0; i<=tsize; i++) {
> > 		buffer[i++] = *_text;

Irtad, hogy csak egy karakter jon at. Latszik, hogy a _text-et nem
indexeled. Nem ez a gond?

Udv.

--

tocsa

 ---
| email:                        |
| homepage:  http://www.inf.bme.hu/~tocsa       |
 ---

AGYKONTROLL ALLAT AUTO AZSIA BUDAPEST CODER DOSZ FELVIDEK FILM FILOZOFIA FORUM GURU HANG HIPHOP HIRDETES HIRMONDO HIXDVD HUDOM HUNGARY JATEK KEP KONYHA KONYV KORNYESZ KUKKER KULTURA LINUX MAGELLAN MAHAL MOBIL MOKA MOZAIK NARANCS NARANCS1 NY NYELV OTTHON OTTHONKA PARA RANDI REJTVENY SCM SPORT SZABAD SZALON TANC TIPP TUDOMANY UK UTAZAS UTLEVEL VITA WEBMESTER WINDOWS