AndrewCrewKuznetsov / xneur-devel

Xneur main repository
55 stars 25 forks source link

Revert ""strncat -> memmove" patch" #72

Closed Mingun closed 3 years ago

Mingun commented 3 years ago

Как отмечено в https://github.com/AndrewCrewKuznetsov/xneur-devel/commit/06d3a6cc6d85fa0251e044a951bf8f28dc4b2f2c#comments, замена strncat на memmove не является корректной:

  1. Во-первых, memmove может заменять strncpy, а не strncat
  2. Во-вторых, strncat копирует <=n символов, до первого нулевого символа, а memmove -- ровно n. В нашем случае от такой замены ничего плохого нет, т.к. n всегда равно длине строки до первого \0.
  3. В-третьих, strncat добавляет к строке завершающий ноль помимо <=n скопированных символов, а memmove этого не делает. Во подавляющем числе случаев использования strncat после выделения память она не зануляется, таким образом нет гарантии, что после таких замен останется нулевой символ в конце строки.