Improving software security with a C pointer analysis