sqc 0.4.13

Software Code Quality - CERT C compliance checker
/*
 * Rule: INT33-C
 * Source: testcases
 * Status: FAIL - Should trigger INT33-C violation
 */

/*
 * Rule: INT33-C - Ensure that division and remainder operations do not result in divide-by-zero errors
 * Status: FAIL
 * Reason: Recursive function eventually returns zero used as divisor
 */

#include <stdio.h>

int countdown(int n) {
    if (n <= 0) {
        return 0;  // Base case returns zero
    }
    return countdown(n - 1);
}

int main() {
    int dividend = 84;
    int divisor = countdown(3);  // Eventually returns 0

    int result = dividend / divisor;  // Division by zero
    printf("Result: %d\n", result);
    return 0;
}