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