Ero sivun ”Puskurin ylivuotovirhe” versioiden välillä

[arvioimaton versio][arvioimaton versio]
Poistettu sisältö Lisätty sisältö
Ei muokkausyhteenvetoa
Rivi 1:
'''Puskurin ylivuotovirhe''' on tietokoneohjelmassa tapahtuva [[Ohjelmointivirhe|virhetilanne]], jossa ohjelma tallentaa saamansa [[syöte|syötteen]] osittain sille varatun [[muistialue]]en ulkopuolelle. Virhe saattaa aiheuttaa merkittäviä vahinkoja ohjelman ja sitä suorittavan tietokonejärjestelmän toiminnalle. Puskurin ylivuotovirheet ovat olleet tärkein yksittäinen tekninen syy ohjelmissa ja käyttöjärjestelmissä esiintyville tietoturvaongelmille.
 
[[Puskuri]]n ylivuoto tapahtuu silloin, kun ohjelma kasvattaa tai vähentää muistialueeseen osoittavaa indeksiä[[indeksi]]ä niin suureksi tai pieneksi, että indeksi ei enää osoitakaan puskurille varatulle muistialueelle, vaan tallennettavat tietoalkiot ikään kuin vuotavat sen yli edellä tai jäljessä oleviin, muuhun käyttöön varattuihin [[muistipaikka|muistipaikkoihin]].
 
Puskurin ylivuotovirhe on tietoturvaongelma selkeimmin ohjelmassa, jotka on toteutettu suhteellisen matalan tason kielellä, jossa ei ole huomioitu muistialueiden suojaustarvetta ohjelman omilta, mutta asiaankuulumattomilta muokkauksilta. Näitä kieliä ovat mm. [[C-ohjelmointikieli|C]] ja [[C_plus_plus|C++]]. Useat kielet, kuten [[Java]] ja [[Lisp]] huolehtivat sisäisesti muistinhallinnasta ja ovat immuuneja puskurin ylivuotovirheille. Joskus kuitenkin nämä immuunitkin ohjelmointikielet saattavat altistua tälle ongelmalle, koska on hyvin yleistä että käytetään pientä C:llä tehtyjä rutiinia.