2015-02-04 5 views
1

Что означает «l» в strlcpy? Я уверен, что после того, как вы спросите, это будет ужасно очевидно, но я не могу ни разу не выработать надежный ответ.Что такое «l» для strlcpy?

+2

Вы имеете в виду, что вы не можете найти ответ на [man-страницах] (https://www.freebsd.org/cgi/man.cgi?query=strlcpy&sektion=3)? –

+3

Я бы сказал «длина». – Quentin

+1

[ответ на другой вопрос SO] (http://stackoverflow.com/a/2115015/434551): «strlcpy - действительно настоящая функция копирования с ограниченной длиной, созданная для работы с C-строками». Кажется, 'l' в' strlcpy' означает 'ограниченная длина'. –

ответ

7

strlcpy был представлен в USENIX 1999 Тоддом Миллером и Тео Раадтом (проект OpenBSD).

Из бумаги Proceedings, strlcpy and strlcat — Consistent, Safe, String Copy and Concatenation, в реферате написано:

Предлагаемые функции замены, strlcpy() и strlcat(), решить эти проблемы, представляя API, предназначенный для безопасного строковых копий (см. рисунок 1 для прототипов функций). Обе функции гарантируют NUL-завершение, принимать в качестве параметра длины размер строки в байтах, и обеспечивают простой способ обнаружения усечения

Поэтому довольно очевидно, что l стенды для длины.

+0

Я ценю историческую связь, спасибо! – RJS

+0

Это было время в истории, когда в справочном разделе в бумагах безопасности всегда была бумага [1] Aleph One о переполнении буфера и [2] ссылка на рассылку Bugtraq. – ouah