구조체 포인터를 생성 하고 널 체크를 하지 않은채 바로 참조 했을때 발생한다.
ex)
void basic_reverse_null(struct buf_t *request_buf) {
kind_of_struct *kStruct;
*request_buf = some_function(); // Assignment dereference
*kStruct = another_function((*kind_of_struct)request_buf);
}
해결책)
void basic_reverse_null(struct buf_t *request_buf) {
kind_of_struct *kStruct;
*request_buf = some_function(); // Assignment dereference
if (request_buff == NULL) // NULL check AFTER dereference
return -ENOMEM;
*kStruct = another_function((*kind_of_struct)request_buf);
}
void basic_reverse_null(struct buf_t *request_buf) {
kind_of_struct *kStruct;
if(*request_buf = some_function()==NULL) // Assignment dereference
return -ENOMEM;
*kStruct = another_function((*kind_of_struct)request_buf);
}
void basic_reverse_null(struct buf_t *request_buf) {
kind_of_struct *kStruct;
if(*request_buf = some_function()!=NULL) // Assignment dereference
*kStruct = another_function((*kind_of_struct)request_buf);
}
간단하지만 쉽게 지나치기 쉬운 부분이다.