The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

strncat (3)
  • >> strncat (3) ( FreeBSD man: Библиотечные вызовы )
  • strncat (3) ( Русские man: Библиотечные вызовы )
  • strncat (3) ( Linux man: Библиотечные вызовы )
  • strncat (3) ( POSIX man: Библиотечные вызовы )

  • BSD mandoc
     

    NAME

    
    
    strcat
    
     - concatenate strings
    
     
    

    LIBRARY

    Lb libc
    
     
    

    SYNOPSIS

       #include <string.h>
    char * strcat (char * restrict s const char * restrict append);
    char * strncat (char * restrict s const char * restrict append size_t count);
     

    DESCRIPTION

    The strcat ();
    and strncat ();
    functions append a copy of the null-terminated string Fa append to the end of the null-terminated string Fa s , then add a terminating `\0' The string Fa s must have sufficient space to hold the result.

    The strncat ();
    function appends not more than Fa count characters from Fa append , and then adds a terminating `\0'  

    RETURN VALUES

    The strcat ();
    and strncat ();
    functions return the pointer Fa s .  

    SECURITY CONSIDERATIONS

    The strcat ();
    function is easily misused in a manner which enables malicious users to arbitrarily change a running program's functionality through a buffer overflow attack. (See the FSA.)

    Avoid using strcat (.);
    Instead, use strncat ();
    or strlcat ();
    and ensure that no more characters are copied to the destination buffer than it can hold.

    Note that strncat ();
    can also be problematic. It may be a security concern for a string to be truncated at all. Since the truncated string will not be as long as the original, it may refer to a completely different resource and usage of the truncated resource could result in very incorrect behavior. Example:

    void
    foo(const char *arbitrary_string)
    {
            char onstack[8];
    
    #if defined(BAD)
            /*
             * This first strcat is bad behavior.  Do not use strcat!
             */
            (void)strcat(onstack, arbitrary_string);        /* BAD! */
    #elif defined(BETTER)
            /*
             * The following two lines demonstrate better use of
             * strncat().
             */
            (void)strncat(onstack, arbitrary_string,
                sizeof(onstack) - strlen(onstack) - 1);
    #elif defined(BEST)
            /*
             * These lines are even more robust due to testing for
             * truncation.
             */
            if (strlen(arbitrary_string) + 1 >
                sizeof(onstack) - strlen(onstack))
                    err(1, "onstack would be truncated");
            (void)strncat(onstack, arbitrary_string,
                sizeof(onstack) - strlen(onstack) - 1);
    #endif
    }
    
     

    SEE ALSO

    bcopy(3), memccpy(3), memcpy(3), memmove(3), strcpy(3), strlcat(3), strlcpy(3)  

    STANDARDS

    The strcat ();
    and strncat ();
    functions conform to St -isoC .


     

    Index

    NAME
    LIBRARY
    SYNOPSIS
    DESCRIPTION
    RETURN VALUES
    SECURITY CONSIDERATIONS
    SEE ALSO
    STANDARDS


    Поиск по тексту MAN-ов: 




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру