bridges/source/net_uno/net_data.cxx |    5 +++++
 1 file changed, 5 insertions(+)

New commits:
commit abbfb2c91584502bdf3d0d2c5681a0df16f3b08d
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Tue Sep 16 09:47:32 2025 +0500
Commit:     Mike Kaganski <mike.kagan...@collabora.com>
CommitDate: Tue Sep 16 13:46:28 2025 +0200

    master_win_analyze: Silence C6011: Dereferencing NULL pointer in bridges
    
    malloc indeed can return a nullptr; we treat OOM situation as an
    unrecoverable error; so add some asserts.
    
    Change-Id: I937991248372d12e1688a046c9f67363312ac570
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191013
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>

diff --git a/bridges/source/net_uno/net_data.cxx 
b/bridges/source/net_uno/net_data.cxx
index 9a6bfc805dad..667f65f7ac88 100644
--- a/bridges/source/net_uno/net_data.cxx
+++ b/bridges/source/net_uno/net_data.cxx
@@ -53,6 +53,7 @@ IntPtr alloc_net_string(const OUString& str)
     sal_Int32 len = str.getLength();
 
     void* dst = std::malloc((len + 1) * sizeof(sal_Unicode));
+    assert(dst);
     std::memcpy(dst, src, len * sizeof(sal_Unicode));
     static_cast<sal_Unicode*>(dst)[len] = u'
 
@@ -62,6 +63,7 @@ IntPtr alloc_net_string(const OUString& str)
 uno_Sequence* alloc_uno_sequence(sal_Int32 nElements, sal_Int32 nElementSize, 
void* data)
 {
     void* mem = std::malloc(SAL_SEQUENCE_HEADER_SIZE + nElements * 
nElementSize);
+    assert(mem);
 
     uno_Sequence* seq = static_cast<uno_Sequence*>(mem);
     seq->nRefCount = 1;
@@ -155,6 +157,7 @@ void marshal_data(void* pUnoData, void* pNetData, 
typelib_TypeDescriptionReferen
                     else
                     {
                         IntPtr mem = std::malloc(size);
+                        assert(mem);
                         std::memcpy(mem, pUnoAny->pData, size);
                         std::free(ppNetAny->data);
                         ppNetAny->data = mem;
@@ -220,6 +223,7 @@ void marshal_data(void* pUnoData, void* pNetData, 
typelib_TypeDescriptionReferen
                 case typelib_TypeClass_ENUM:
                 {
                     ppNetSeq->data = std::malloc(nNetElemSize * 
ppNetSeq->length);
+                    assert(ppNetSeq->data);
                     std::memcpy(ppNetSeq->data, pUnoSeq->elements, 
nNetElemSize * ppNetSeq->length);
                     break;
                 }
@@ -486,6 +490,7 @@ void unmarshal_data(void* pUnoData, void* pNetData, 
typelib_TypeDescriptionRefer
                         else
                         {
                             void* mem = std::malloc(size);
+                            assert(mem);
                             std::memcpy(mem, pNetAny->data, size);
                             pUnoAny->pData = mem;
                             std::free(pNetAny->data);

Reply via email to