Mikä on puskurin ylivuoto?

Puskurin ylivuoto tapahtuu, kun ohjelma yrittää kirjoittaa puskuriin ja astuu sen rajojen ulkopuolelle, minkä seurauksena ohjelma kirjoittaa tietoja muistiin, joka mahdollisesti kuuluu toiselle ohjelmalle. Tämä rikkoo muistin eheyttä käyttöjärjestelmässä, aiheuttaen vakavan virheen ja mahdollisen kaatumisen suorittavalle ohjelmalle. Puskurin ylivuotamisen suurin vaara johtuu kahdesta pääelementistä. Ensinnäkin puskurin ulkopuolelle kirjoitetut tiedot ovat näennäisesti “kadonneet”, koska tietokoneen muistikartta – sen muistipaikkojen luettelo – ei voi ottaa sitä huomioon. Toiseksi puskurin ylivuoto voi vahingossa korvata muistiin tallennetut tiedot toiselle ohjelmalle, mikä häiritsee tehokkaasti myös toisen ohjelman suorittamista.

Puskuri on muistialue, jota käytetään väliaikaisena tallennuspaikkana, kun tietokone siirtää tietoja pisteestä toiseen. Puskurin yleisin käyttö on tyypillisesti videon tai äänen toisto, jossa tietokone tuo muistiin vielä X sekuntia materiaalia tai ääntä, mikä varmistaa, että toisto ei keskeydy, jos järjestelmässä tapahtuu väliaikaisesti jotain vikaa. Puskuri on olemassa vain tietyssä, ennalta määrätyssä paikassa tietokoneen muistissa, aivan kuten maa on vain kartalle piirrettyjen rajaviivojen sisällä. Näiden virtuaalisten “linjojen” ulkopuolelle siirtyminen aiheuttaa ongelmia paitsi käynnissä olevalle ohjelmalle myös muille järjestelmän ohjelmille.

Pohjimmiltaan ohjelma on siirtynyt sille määrätyn lainkäyttöalueen ulkopuolelle ja tunkeutunut toisen työohjelman alueeseen. Kun tämä tapahtuu, puskurin ulkopuolelle kirjoitetut tiedot putoavat tehokkaasti tietokoneen kartalta; toisin sanoen järjestelmällä ei ole enää mitään keinoa hakea sitä. Koska tietokone vain “osaa” etsiä puskuroitua tietoa muistiin varatusta tietystä puskuritilasta, sillä ei ole mitään keinoa selvittää, minne ylivuoto on kadonnut.

Tämän lisäksi puskurin ylivuoto voi häiritä muita tietokoneessa käynnissä olevia ohjelmia. Kuvittele, että muistin tallennustila puskurin kummallakin puolella on jo osoitettu muille käynnissä oleville ohjelmille. Kun puskurin tiedot vuotavat suunnitellun alueen ohi, ne korvaavat ja korruptoivat kaikki tiedot, jotka on jo tallennettu muistin osiin. Siksi puskurin ylivuoto on ongelma, joka voi heikentää viereisen ohjelman tehokkuutta ja vioittaa sen omaa toimintaa.