VirtualBox

Changeset 103444 in vbox


Ignore:
Timestamp:
Feb 19, 2024 1:58:17 PM (11 months ago)
Author:
vboxsync
Message:

IPRT: Reverted r161541, r161577 & r161578 because the RTStrCopy2 and RTStrCat2 functions encourages writing unsafe code, given that RTStrCat[2] doesn't check for NULL destination buffers and will crash if the two are chained.

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/iprt/mangling.h

    r103283 r103444  
    22662266# define RTStrCalcUtf16LenEx                            RT_MANGLER(RTStrCalcUtf16LenEx)
    22672267# define RTStrCat                                       RT_MANGLER(RTStrCat)
    2268 # define RTStrCat2                                      RT_MANGLER(RTStrCat2)
    22692268# define RTStrCatEx                                     RT_MANGLER(RTStrCatEx)
    22702269# define RTStrCatP                                      RT_MANGLER(RTStrCatP)
     
    22742273# define RTStrConvertHexBytesEx                         RT_MANGLER(RTStrConvertHexBytesEx)
    22752274# define RTStrCopy                                      RT_MANGLER(RTStrCopy)
    2276 # define RTStrCopy2                                     RT_MANGLER(RTStrCopy2)
    22772275# define RTStrCopyEx                                    RT_MANGLER(RTStrCopyEx)
    22782276# define RTStrCopyP                                     RT_MANGLER(RTStrCopyP)
  • trunk/include/iprt/string.h

    r103283 r103444  
    23782378 * String copy with overflow handling.
    23792379 *
    2380  * @return  Pointer to \a pszDst on success, or NULL on failure.
    2381  *
    2382  * @param   pszDst              The destination buffer.
    2383  * @param   cbDst               The size of the destination buffer (in bytes).
    2384  * @param   pszSrc              The source string.  NULL is not OK.
    2385  */
    2386 RTDECL(char *) RTStrCopy2(char *pszDst, size_t cbDst, const char *pszSrc);
    2387 
    2388 /**
    2389  * String copy with overflow handling.
    2390  *
    23912380 * @retval  VINF_SUCCESS on success.
    23922381 * @retval  VERR_BUFFER_OVERFLOW if the destination buffer is too small.  The
     
    24572446 */
    24582447RTDECL(int) RTStrCat(char *pszDst, size_t cbDst, const char *pszSrc);
    2459 
    2460 /**
    2461  * String concatenation with overflow handling.
    2462  *
    2463  * @return  Pointer to \a pszDst on success, or NULL on failure.
    2464  *
    2465  * @param   pszDst              The destination buffer.
    2466  * @param   cbDst               The size of the destination buffer (in bytes).
    2467  * @param   pszSrc              The source string.  NULL is not OK.
    2468  */
    2469 RTDECL(char *) RTStrCat2(char *pszDst, size_t cbDst, const char *pszSrc);
    24702448
    24712449/**
  • trunk/src/VBox/Runtime/common/string/RTStrCat.cpp

    r103284 r103444  
    4545
    4646
    47 DECLINLINE(int) rtStrCat(char *pszDst, size_t cbDst, const char *pszSrc)
     47RTDECL(int) RTStrCat(char *pszDst, size_t cbDst, const char *pszSrc)
    4848{
    4949    char *pszDst2 = RTStrEnd(pszDst, cbDst);
     
    6565    return VERR_BUFFER_OVERFLOW;
    6666}
    67 
    68 RTDECL(int) RTStrCat(char *pszDst, size_t cbDst, const char *pszSrc)
    69 {
    70     return rtStrCat(pszDst, cbDst, pszSrc);
    71 }
    7267RT_EXPORT_SYMBOL(RTStrCat);
    7368
    74 RTDECL(char *) RTStrCat2(char *pszDst, size_t cbDst, const char *pszSrc)
    75 {
    76     return RT_SUCCESS(rtStrCat(pszDst, cbDst, pszSrc)) ? pszDst : NULL;
    77 }
    78 RT_EXPORT_SYMBOL(RTStrCat2);
    79 
  • trunk/src/VBox/Runtime/common/string/RTStrCopy.cpp

    r103252 r103444  
    4545
    4646
    47 DECLINLINE(int) rtStrCopy(char *pszDst, size_t cbDst, const char *pszSrc)
     47RTDECL(int) RTStrCopy(char *pszDst, size_t cbDst, const char *pszSrc)
    4848{
    4949    size_t cchSrc = strlen(pszSrc);
     
    6161    return VERR_BUFFER_OVERFLOW;
    6262}
    63 
    64 RTDECL(int) RTStrCopy(char *pszDst, size_t cbDst, const char *pszSrc)
    65 {
    66     return rtStrCopy(pszDst, cbDst, pszSrc);
    67 }
    6863RT_EXPORT_SYMBOL(RTStrCopy);
    6964
    70 RTDECL(char *) RTStrCopy2(char *pszDst, size_t cbDst, const char *pszSrc)
    71 {
    72     return RT_SUCCESS(rtStrCopy(pszDst, cbDst, pszSrc)) ? pszDst : NULL;
    73 }
    74 RT_EXPORT_SYMBOL(RTStrCopy2);
    75 
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette