Bertel Lund Hansen wrote:
> Thorbjørn Ravn Andersen skrev:
>
> >Lige en bemærkning. Dit program indeholder ikke check for at de
> >indlæste linier kan være i din 300 tegns buffer.
>
> Korrekt.
>
> >Det er derfor muligt for en ond person at lave lange linier hvis indhold overskriver dele som
> >ikke har noget med dine strenge at gøre.
>
> Nej. Det kan lade sig gøre med gets(). Det kan ikke lade sig gøre
> med fgets() som højst indlæser det specificerede antal tegn.
Den lille krølle havde jeg overset. Det vil så sige at din kode afskærer linier til 300 tegn,
inden viderbehandling. I det aktuelle tilfælde er det ligemeget, da linien ikke skal bruges
senere, men det er det jo ikke sikker at det gør.
Har du et forslag til hvordan det kan gøres robust og korrekt?
> >Dette er - desværre - en meget hyppig fejl i C, fordi det er så let at gøre.
>
> Ja, og derfor bør man f.eks. bruge fgets(buffer,LINMAX,stdin) som
> en sikker tastaturinputrutine.
Men med samme problem som før
--
Thorbjørn Ravn Andersen "...plus... Tubular Bells!"
http://bigfoot.com/~thunderbear