Cppcheck ha detectado un problema potencial en un código como el siguiente:¿Cómo se pueden bloquear los números con sscanf?
float a, b, c;
int count = sscanf(data, "%f,%f,%f", &a, &b, &c);
Se dice que: "scanf sin límites de anchura de campo puede chocar con enorme de datos". ¿Cómo es eso posible? ¿Es un error conocido en algunas implementaciones de sscanf? Entiendo que los números pueden desbordarse (numéricamente), pero ¿cómo podría colapsar el programa? ¿Es eso un falso positivo en cppcheck?
He encontrado una pregunta similar: scanf Cppcheck warning, pero la respuesta no es completamente satisfactoria. La respuesta menciona seguridad tipo, pero eso no debería ser un problema aquí.
Pruebe sscanf_s en su lugar. Como scanf normal, sscanf no es desbordante seguro. – guitarflow
@guitarflow: El problema es que no veo dónde puede desbordarse. –
@guitarflow O no. 'sscanf_s' no es portátil y tampoco es realmente seguro, a pesar de lo que su nombre sugiere y afirma Microsoft. –