Use strncpy to avoid overflow and fill the rest with nulls

Change-Id: I29c427b87aa87af3236bd6e1a7e9e08e6f470bf6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126227
Tested-by: Mike Kaganski <mike.kaganski@collabora.com>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
diff --git a/vcl/source/treelist/transfer.cxx b/vcl/source/treelist/transfer.cxx
index 81c9965..4561535 100644
--- a/vcl/source/treelist/transfer.cxx
+++ b/vcl/source/treelist/transfer.cxx
@@ -784,10 +784,11 @@ bool TransferableHelper::SetINetBookmark( const INetBookmark& rBmk,
        case SotClipboardFormatId::NETSCAPE_BOOKMARK:
        {
            Sequence< sal_Int8 > aSeq( 2048 );
            char* pSeq = reinterpret_cast< char* >( aSeq.getArray() );

            memset( aSeq.getArray(), 0, 2048 );
            strcpy( reinterpret_cast< char* >( aSeq.getArray() ), OUStringToOString(rBmk.GetURL(), eSysCSet).getStr() );
            strcpy( reinterpret_cast< char* >( aSeq.getArray() ) + 1024, OUStringToOString(rBmk.GetDescription(), eSysCSet).getStr() );
            // strncpy fills the rest with nulls, as we need
            strncpy( pSeq, OUStringToOString(rBmk.GetURL(), eSysCSet).getStr(), 1024 );
            strncpy( pSeq + 1024, OUStringToOString(rBmk.GetDescription(), eSysCSet).getStr(), 1024 );

            maAny <<= aSeq;
        }