Pc-lint Plus Se -

She opened nav_sensor.c at line 408. A simple loop:

The terminal blinked. Then it began to scream.

“No. Too expensive.” He paused. “But I bought you the standard PC-lint Plus. It won’t catch everything SE can, but it’ll catch most. And for the rest...” He slid a worn notebook across the desk. On the cover, Eleanor had written years ago: “Trust, but verify with static analysis.” pc-lint plus se

for (int i = 0; i < SENSOR_HISTORY; i++) { temp_ptr = &sensor_buffer[(offset + i) % BUFSZ]; calib_ptr = &calib_table[temp_ptr->raw >> 2]; if (temp_ptr->value > 85.0) { *calib_ptr = apply_emergency_curve(temp_ptr->value); // here } } The aliasing was invisible to human eyes and to ordinary linters. But temp_ptr and calib_ptr could, under specific unrolling, point to overlapping memory if offset was maliciously crafted. The write to calib_ptr would then corrupt the next sensor’s buffer, causing a silent overflow.

“Can we keep the license?”

She fixed the loop by adding a restrict qualifier and a bounds check on offset . Recompiled. Ran the hardware-in-the-loop test. Seventeen hours passed. Twenty. Thirty.

“We can’t. But we also can’t afford a drone that falls out of the sky. I’ll pull strings.” Two hours later, a license file landed in her inbox. Eleanor downloaded the tool, a command-line beast with no GUI, just a configuration file that looked like an ancient spellbook. She spent the next hour tuning it: setting the dialect to C17, enabling MISRA C:2023, turning on the aggressive interprocedural analysis, and—her final gambit—flipping on . She opened nav_sensor

“The issue isn’t the hardware,” Eleanor said, rubbing her eyes. “It’s the software. There’s a pointer dereference that only corrupts memory when the temperature sensor hits a specific threshold. I’ve run every static analyzer we own. Nothing catches it.”