A buffer overflow is triggered by coding errors. The program can thereby be made to write more data to a data structure (for example a buffer for temporary data storage) in the main memory (RAM) than it was meant to hold. The extra data can thus overwrite adjacent data structures and cause unwanted changes in the memory content or program flow. Buffer overflow problems usually occur only in programs which have been written in programming languages with direct memory access (e.g. C). A related issue is buffer over-read, where more data can be read than intended and thus internal information of the program becomes visible. An example of this variant is the so-called Heartbleed bug in OpenSSL.