  void * alloc_bottom(size_t size)  {
    byte * tmp = bottom;
    bottom += size;
    if (bottom > top) {new_chunk(); tmp = bottom; bottom += size;}
    return tmp;
  }
The software writes data past the end, or before the beginning, of the intended buffer.