Skaf 0 28 февраля, 2010 Опубликовано 28 февраля, 2010 · Жалоба Всем привет. Пишу на Си. К сожалению не являюсь пока большим специалистом, поэтому обращаюсь за помощью. Есть функция void telnet_send_line (char *line, char newline=0){ char *bufptr; unsigned char linelen = strlen(line); bufptr = uip_appdata; memcpy(bufptr, line, linelen); uip_send(uip_appdata, linelen); } Является ли она безопасной? Или возможны глюки с памятью? Функция принимает указатель на строку. Понятное дело строка неизвестной длинны. Потом создается указатель, измеряется длинна строки. Указателю bufptr присваивается значение. Это тоже указатель, только на системный буфер, в который таким образом происходит запись. потом строка копируется в буфер и вызывается системная функция. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 14 28 февраля, 2010 Опубликовано 28 февраля, 2010 · Жалоба Нормальная функция. Только надо проверить, что linelen не больше, чем размер буфера uip_appdata. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 28 февраля, 2010 Опубликовано 28 февраля, 2010 · Жалоба Нормальная функция. Муть голубая. newline особый прикол. Остальное void telnet_send_line (char *line){ int linelen = strlen(line) + 1; //контроль размера добавить, например: if( linelen > sizeof(тот_самый_буфер) ) linelen = sizeof(тот_самый_буфер); memcpy(uip_appdata, line, linelen); uip_send(uip_appdata, linelen); } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться