1. A method of detecting vulnerabilities in source code comprising: generating a model which describes certain characteristics about the flow of a routine, and using the model in conjunction with pre-specified criteria for the corresponding routine to determine whether the routine calls possess vulnerabilities as a consequence of the flow of the routine.