• If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

  • You already know Dokkio is an AI-powered assistant to organize & manage your digital files & messages. Very soon, Dokkio will support Outlook as well as One Drive. Check it out today!

View
 

BarCampDenverSessionMudflap

This version was saved 17 years, 6 months ago View current version     Page history
Saved by PBworks
on August 26, 2006 at 1:08:45 pm
 

Presenter notes for Electric Fence, mudflap, and debugging talk

BarCampDenver, August 2006

16:00 MDT

 

C/C++ specific -- allows greater control. "Portable assembly language"

What are memory errors?

* Buffer overflow/underflow

* Memory leaks

* Accessing memory after it's been deleted

 

(What is the heap? Where can variables be allocated? (static, stack, heap))

 

The application:

 

$ g++ -g -Wall buffer.cxx -o buffer

 

ELECTRIC FENCE

 

Written by Bruce Perens for Pixar in 1987.

 

How it works: Uses mprotect() syscall to mark pages as invalid.

(Potential tangent: What are memory pages?)

Aligns dynamic memory (malloc()/free()) so that it adjoins an invalid page

Upon deallocation, marks deallocated page as invalid

Creates segmentation fault on overflow, or invalid use

Can be linked dynamically; use LD_PRELOAD to invoke at runtime:

$ LD_PRELOAD=libefence.so.0.0.0 ./eftest

Use gdb options to do the same thing:

(gdb) set environment LD_PRELOAD libefence.so.0.0

GDB takes you to the exact line that caused the buffer overflow

 

MUDFLAP

 

New for gcc 4 (right?)

Paper published in 2003 by Frank Eigler

Does more of what Electric Fence does; also protects against static and stack

objects; memory leaks

Application must use gcc 4, must be recompiled

$ g++ -g -Wall buffer.cxx -o buffer -fmudflap -lmudflap

Behavior can be controlled at runtime

$ MUDFLAP_OPTIONS=-help ./mudflap