소프트웨어 개발(SW Dev)/Rule(CERT C)

CERT C - ARR 규칙 목록

flowhistory 2024. 11. 11. 13:00

ARR

 

Arrays (ARR) - 배열

배열과 관련된 내용을 다루는 카테고리입니다. 
배열의 안전한 사용을 위한 규칙이 포함되어 있습니다.

 

Rule Number Rule Definition 설명
ARR02-C 암시적으로 초기화된 경우라도 배열의 경계를 명시적으로 지정하라 배열의 경계를 명시적으로 지정해야 합니다.
암시적으로 초기화된 경우라도 배열의 경계를 벗어나지 않도록 주의해야 합니다.
배열의 크기를 명시적으로 지정하는 측면에 초점을 두고 있습니다.
ARR30-C 배열의 인덱스가 유효한 범위 안에 있음을 보장하라 배열의 인덱스가 유효한 범위 내에 있음을 확인해야 한다고 강조합니다.
배열의 인덱스가 유효하지 않으면, 예를 들어 배열의 경계를 벗어난 경우, 정의되지 않은 동작이 발생할 수 있습니다.
배열의 인덱스를 검사하여 유효한 범위 내에 있는지 확인하고, 유효하지 않은 경우 적절한 조치를 취해야 합니다.
배열의 인덱스가 유효한 범위 내에 있음을 보장하는 측면에 초점을 두고 있습니다.
ARR32-C 가변 배열에서 크기를 나타내는 인자가 유효한 범위에 있음을 보장하라 가변 배열 (Variable length arrays, VLAs)에서 크기를 나타내는 인자가 유효한 범위 내에 있어야 합니다.
인자가 유효하지 않으면 배열의 크기를 정확하게 알 수 없으며, 버퍼 오버런과 같은 문제가 발생할 수 있습니다.
ARR36-C 두 개의 서로 다른 배열을 가리키는 포인터를 빼거나 비교하지 마라 두 개의 포인터를 뺄 때는 반드시 같은 배열 객체의 요소를 가리키도록 해야 합니다.
또는 배열 객체의 마지막 요소 바로 다음을 가리키는 경우에도 허용됩니다.
그렇지 않은 경우, 이 연산은 정의되지 않은 동작으로 간주됩니다.
ARR37-C 배열이 아닌 객체를 가리키는 포인터에 정수를 더하거나 빼지 마라 두 개의 포인터를 뺄 때는 반드시 같은 배열 객체의 요소를 가리키도록 해야 합니다.
또는 배열 객체의 마지막 요소 바로 다음을 가리키는 경우에도 허용됩니다.
그렇지 않은 경우, 이 연산은 정의되지 않은 동작으로 간주됩니다.
728x90