Patent ID: 7617489

Claim:
A computer implemented method of detecting vulnerabilities in a pre-existing source code listing, stored in computer readable medium having computer executable instructions, said source code listing having a plurality of routines and a plurality of calls to routines, said source code listing further having an inherent control flow and an inherent data flow during the computer execution thereof, said computer implemented method comprising the acts of: analyzing the control flow and data flow of the source code listing and modeling the variables in the source code listing in the context of at least one of the inherent control flow and inherent data flow, in which each model specifies pre-determined characteristics about each variable; using the variable models to create models of arguments to routine calls in the source code listing; modeling the source code listing with a call graph to represent routine call interactions expressed in the source code listing; traversing the call graph in modeling the arguments to routine calls to account for inter-procedural effects and dependencies on changes in ranges of possible values of the arguments as expressed in the source code listing, wherein said traversing is controlled by rules to limit computational costs of the modeling; using the argument models in conjunction with pre-specified criteria for the corresponding routine calls to determine whether the routine calls possess vulnerabilities as a consequence of the ranges of possible values of the arguments and known routine behavior; and generating a report, usable by a user, that identifies the vulnerabilities.