LINUX.ORG.RU

Анализатор кода на github : Security issue strlen

 


0

1

Может кто подскажет причину для предупреждения?

Оно боится строк длинной в несколько гигов?

int ndpi_match_string(void *automa, char *string_to_match) {
  uint16_t proto_id = 0;
  int rc;
  if(!string_to_match)
	  return(-2);
  rc = ndpi_match_string_common(automa,string_to_match,strlen(string_to_match),&proto_id, NULL, NULL);

Предупреждение

Code Inspector / Code Inspector - Code Review

Security issue

strlen

прототип

int ndpi_match_string_common(void *automa, char *string_to_match,size_t string_len,
                u_int16_t *protocol_id, ndpi_protocol_category_t *category,ndpi_protocol_breed_t *breed);

★★★★★

в строке может не быть нуля. кстати, какое же днище эти сишные «строки» - в каждой вложенной функции дёргается strlen(), вместо того, чтобы хранить размер…

anonymous
()

Нужно смотреть на код. Как вариант, может ругаться на такой сценарий:

char string_to_match[100];

/* ... */

int rc = ndpi_match_string(automa, string_to_match);

Если статический анализатор не уверен, что у тебя string_to_match инициализирован и гарантированно содержит ‘\0’, он будет ругаться на возможное переполнение буфера.

sjinks ★★★
()
Ответ на: комментарий от anonymous

в строке может не быть нуля. кстати, какое же днище эти сишные «строки» - в каждой вложенной функции дёргается strlen(), вместо того, чтобы хранить размер…

C это defective by design

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.