Secure Programming in C/C++

Links from the class materials and other supplemental information, grouped by chapter:

Class files for labs



Chapter 1: Introduction



Chapter 2: Secure C/C++ Programming

Links from the text:



Chapter 3: Security and the software development life cycle

Links from the text:



Chapter 4: Integer operations

Links from the text:



Chapter 5: Buffer overflow introduction

Links from the text:



Chapter 6: Stack overflows

Links from the text:

Additional links, not from the course text, or, software needed for the chapter:

Applying `design by contract' by Meyer, B., from IEEE Computer v 25 n 10, pp 40--51.



Chapter 7: Heap and other data segment overflows

Links from the text:



Chapter 8: Pointer issues

Links from the text:



Chapter 9: Buffer overflow avoidance and mitigation

Links from the text:

Additional links, not from the course text, or, software needed for the chapter:

diehard-1.0.2-linux.tar.gz
diehard-1.0.2.zip (source code)



Chapter 10: Format string errors

Links from the text:

Additional links, not from the course text, or, software needed for the chapter:

pscan-1.2-1.fc4.i386.rpm
rats-2.1-win32.zip
rats-2.1.tar.gz



Chapter 11: Tips and techniques

Links from the text:

Additional links, not from the course text, or, software needed for the chapter:

flawfinder-1.27-1.noarch.rpm
flawfinder-1.27-1.src.rpm
flawfinder-1.27.tar.gz
rats-2.1-win32.zip
rats-2.1.tar.gz
splint-3.1.1.src.tgz
These are local copies.



Chapter 12: Process issues

Links from the text:

Additional links, not from the course text, or, software needed for the chapter:

RazorSignals.pdf (Local copy)
sendmail.8.13.3.tar.gz (Local copy)



Chapter 13: Filesystem Security Issues

Links from the text:



SkillBridge Training

Examples from the class notes (or, all as one file).

Selected Solutions from the class notes (no looking until you have solved the problems!). Note that all solutions are in an appendix of your course book. All solutions in a compressed tar file.


Evaluation form (if needed)