Перейти к содержанию
    

Безопасна ли функция?

Всем привет. Пишу на Си. К сожалению не являюсь пока большим специалистом, поэтому обращаюсь за помощью.

 

Есть функция

 

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 присваивается значение. Это тоже указатель, только на системный буфер, в который таким образом происходит запись.

 

потом строка копируется в буфер и вызывается системная функция.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нормальная функция. Только надо проверить, что linelen не больше, чем размер буфера uip_appdata.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нормальная функция.

Муть голубая. 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);
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...