Skip Navigation
List Price: $100.64

Rent Book

Select for Price
Add to Cart Free Shipping
There was a problem. Please try again later.

New Book

We're Sorry
Sold Out

Used Book

We're Sorry
Sold Out

Secure Coding in C and C++,9780321822130

Secure Coding in C and C++

Edition: 2nd
Format: Paperback
Pub. Date: 4/2/2013
Publisher(s): Addison-Wesley Professional
Availability: This title is currently not available.


Write secure C and C++ code -- and avoid the software defects most likely to cause exploitable vulnerabilities! Straight from the world-renowned security experts at CERT/CC, this book identifies the root causes of today's most widespread software vulnerabilities, shows how they can be exploited, reviews the potential consequences, and presents secure alternatives. Fully updated for the new C++11 standard, Secure Coding in C and C++, Second Editionpresents extensive new coverage of strings, dynamic memory management, integer security, and many other topics -- including an entirely new chapter on writing secure concurrent code. It contains hundreds of Windows- and Linux-based examples of secure code, insecure code, and exploits; comprehensive practical guidance for adopting modern security best practices; and important new insights for developing a security mindset that can help you protect software against tomorrow's attacks, not just today's. This edition also provides unique access to CERT's pioneering Online Learning Initiative (OLI) course on secure coding, originally funded by Cisco, Siemens, and other industry leaders to provide internal training to their own mission-critical developers. For every C/C++ developer who wants to write more secure code.

Author Biography

Robert C. Seacord is currently the Secure Coding Technical Manager  in the CERT Program of Carnegie Mellon’s Software Engineering Institute (SEI). He is the author or coauthor of five books, including The CERT® C Secure Coding Standard (Addison-Wesley, 2009), and is the author and instructor of a video training series, Professional C Programming Live Lessons, Part I: Writing Robust, Secure, Reliable Code (Addison-Wesley, 2013).

Table of Contents



About the Author


Chapter 1:  Running with Scissors

1.1  Gauging the Threat

1.2  Security Concepts

1.3  C and C++

1.4  Development Platforms

1.5  Summary

1.6  Further Reading


Chapter 2:  Strings

2.1  Character Strings

2.2  Common String Manipulation Errors

2.3  String Vulnerabilities and Exploits

2.4  Mitigation Strategies for Strings

2.5  String-Handling Functions

2.6  Runtime Protection Strategies


Chapter 3:  Pointer Subterfuge

3.1  Data Locations

3.2  Function Pointers

3.3  Data Pointers

 3.4  Modifying the Instruction Pointer

3.5  Global Offset Table

3.6  The .dtors Section

3.7  Virtual Pointers

3.8  The atexit() and on_exit() Functions

3.9  The longjmp() Function

3.10  Exception Handling

3.11  Mitigation Strategies

3.12  Summary

3.13  Further Reading


Chapter 4:  Dynamic Memory Management

4.1  C Memory Management

4.2  Common C Memory Management Errors

4.3  C++ Dynamic Memory Management

4.4  Common C++ Memory Management Errors

4.5  Improperly Paired Memory Management Functions

4.6  Memory Managers

4.7  Doug Lea’s Memory Allocator

4.8  Double-Free Vulnerabilities

4.9  Mitigation Strategies

4.10  Notable Vulnerabilities

4.11  Summary


Chapter 5:  Integer Security

5.1  Introduction to Integer Security

5.2  Integer Data Types

5.3  Integer Conversions

5.4  Integer Operations

5.5  Integer Vulnerabilities

5.6  Mitigation Strategies

5.7  Summary


Chapter 6:  Formatted Output

6.1  Variadic Functions

6.2  Formatted Output Functions

6.3  Exploiting Formatted Output Functions

6.4  Stack Randomization

6.5  Mitigation Strategies

6.6  Notable Vulnerabilities

6.7  Summary

6.8 Further Reading


Chapter 7:  Concurrency

7.1  Introduction

7.2  Performance Goals

7.3  Concurrency Pitfalls

7.4  Concurrency Mitigations

7.5  Concurrency in C and C++

7.6  Concurrency Vulnerabilities


Chapter 8:  File I/O

8.1  File I/O Basics

8.2  File I/O Interfaces

8.3  Access Control

8.4  File Identification

8.5  Race Conditions

8.6  Mitigation Strategies

8.7  Summary


Chapter 9:  Recommended Practices

9.1  The Security Development Lifecycle

9.2  Security Training

9.3  Requirements

9.4  Design

9.5  Implementation

9.6  Verification

9.7  Summary

9.8  Further Reading





An electronic version of this book is available through VitalSource.

This book is viewable on PC, Mac, iPhone, iPad, iPod Touch, and most smartphones.

By purchasing, you will be able to view this book online, as well as download it, for the chosen number of days.

A downloadable version of this book is available through the eCampus Reader or compatible Adobe readers.

Applications are available on iOS, Android, PC, Mac, and Windows Mobile platforms.

Please view the compatibility matrix prior to purchase.

American Express