IP Library Granted Patent US 8,527,975
Granted Patent B2
US 8,527,975 · App. 11/934,722 · Granted Sep 3, 2013

Apparatus and method for analyzing source code using memory operation evaluation and boolean satisfiability

Inventors: Brian Chess (Mountain View, CA); Sean Fay (San Francisco, CA); Ayee Kannan Goundan (Los Angeles, CA)
Assignee: Hewlett-Packard Development Company, L.P.
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,527,975
App. No.
11/934,722
Filed
Nov 2, 2007
Granted
Sep 3, 2013
Kind
B2
Examiner
WEI, ZHENG
Art Unit
2192
USPC
717/152
Abstract

A computer readable storage medium includes executable instructions to identify a memory operation in target source code. A set of constraints associated with the memory operation are developed. The constraints are converted into a Boolean expression. The Boolean expression is processed with a Boolean satisfiability engine to determine whether the memory operation is potentially unsafe.

Claims (22)

1. A computer readable storage medium, comprising executable instructions to:

identify a memory operation in target source code;

develop a set of constraints associated with the memory operation, wherein the set of constraints includes base constraints derived from the target source code and additional constraints for forcing the memory operation to be out of bounds;

convert the constraints into a Boolean expression; and

process the Boolean expression with a Boolean satisfiability engine to determine whether the memory operation is potentially unsafe by executing instructions to:

determine whether the memory operation is always safe;

determine whether the memory operation is safe for a number of inputs if the memory operation is determined to be not always safe; and

test boundary conditions for the memory operation if the memory operation is safe for at least some of the number of inputs, wherein the boundary conditions include the base constraints, constraints requiring the memory operation to be within bounds, and constraints for runtime limitations.

2. The computer readable storage medium of claim 1 wherein the Boolean expression is expressed in Conjunctive Normal Form (CNF).

3. The computer readable storage medium of claim 1 further comprising executable instructions to test the boundary conditions to determine if the memory operation is always safe.

4. The computer readable storage medium of claim 3 further comprising executable instructions to determine unsafe operations.

5. The computer readable storage medium of claim 3 further comprising executable instructions to report unsafe operations.

6. The computer readable storage medium of claim 3 further comprising executable instructions to test boundary conditions from base constraints derived from constructs in a memory operation.

7. The computer readable storage medium of claim 3 further comprising executable instructions to test boundary conditions derived from constraints requiring an operation to be within bounds.

8. The computer readable storage medium of claim 3 further comprising executable instructions to test boundary conditions from additional constraints that limit function inputs and global variables to values that will carry during execution.

9. The computer readable storage medium of claim 3 further comprising executable instructions to test boundary conditions from examining branch predicates in a function to infer expected boundary conditions.

10. The computer readable storage medium of claim 3 further comprising executable instructions to test boundary conditions from examining the contexts in which the function is used to determine a set of known possible values for function inputs.

11. The computer readable storage medium of claim 1 further comprising executable instructions to bit width limit the input to the Boolean satisfiability engine.

12. The computer readable storage medium of claim 1 further comprising executable instructions to parse the target source code.

13. The computer readable storage medium of claim 1 further comprising executable instructions to build a model of the target source code.

14. The computer readable storage medium of claim 1 further comprising instructions to develop the set of constraints representing constant values and control structures for the memory operation.

15. The computer readable storage medium of claim 1 further comprising instructions to convert the constraints into the Boolean expression that force the memory operation out of bounds of the memory operation.

Assignments (11)
RELEASE OF SECURITY INTEREST REEL/FRAME 044183/0577 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: MICRO FOCUS LLC (F/K/A ENTIT SOFTWARE LLC)
Reel/Frame 063560/0001 →
RELEASE OF SECURITY INTEREST REEL/FRAME 044183/0718 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: MICRO FOCUS LLC (F/K/A ENTIT SOFTWARE LLC); BORLAND SOFTWARE CORPORATION; MICRO FOCUS (US), INC.; SERENA SOFTWARE, INC; ATTACHMATE CORPORATION; MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.); NETIQ CORPORATION
Reel/Frame 062746/0399 →
CHANGE OF NAME Recorded Aug 8, 2019
From: ENTIT SOFTWARE LLC
To: MICRO FOCUS LLC
Reel/Frame 050004/0001 →
SECURITY INTEREST Recorded Oct 11, 2017
From: ENTIT SOFTWARE LLC; ARCSIGHT, LLC
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 044183/0577 →
SECURITY INTEREST Recorded Oct 11, 2017
From: ATTACHMATE CORPORATION; BORLAND SOFTWARE CORPORATION; NETIQ CORPORATION; MICRO FOCUS (US), INC.; MICRO FOCUS SOFTWARE, INC.; ENTIT SOFTWARE LLC; ARCSIGHT, LLC; SERENA SOFTWARE, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 044183/0718 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 9, 2017
From: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
To: ENTIT SOFTWARE LLC
Reel/Frame 042746/0130 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 9, 2015
From: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 037079/0001 →
MERGER Recorded Nov 16, 2012
From: FORTIFY SOFTWARE, LLC
To: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
Reel/Frame 029316/0274 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 16, 2012
From: HEWLETT-PACKARD SOFTWARE, LLC
To: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
Reel/Frame 029316/0280 →
CERTIFICATE OF CONVERSION Recorded Apr 20, 2011
From: FORTIFY SOFTWARE, INC.
To: FORTIFY SOFTWARE, LLC
Reel/Frame 026155/0089 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 30, 2008
From: CHESS, BRIAN; FAY, SEAN; GOUNDAN, AYEE KANNAN
To: FORTIFY SOFTWARE, INC.
Reel/Frame 020440/0226 →
Continuity (1)
Related Publication 20090119648A1 · May 7, 2009