[Libreoffice-commits] core.git: Branch 'libreoffice-6-4' - basctl/source
Mike Kaganski (via logerrit)
logerrit at kemper.freedesktop.org
Thu Aug 13 15:36:13 UTC 2020
basctl/source/basicide/baside2b.cxx | 60 ++++++++++++++++++------------------
1 file changed, 31 insertions(+), 29 deletions(-)
New commits:
commit 575f4ec1dcb0a2dbd80bfaf001a5fc3072cd11fa
Author: Mike Kaganski <mike.kaganski at collabora.com>
AuthorDate: Tue Aug 11 18:11:10 2020 +0300
Commit: Michael Stahl <michael.stahl at cib.de>
CommitDate: Thu Aug 13 17:35:37 2020 +0200
tdf#135639: check the return value of GetDim32
... to avoid crash accessing non-existing element of pChildItem->vIndices
Change-Id: I248a9301abd69883f940051d9d9671298dcc8453
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/100540
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski at collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/100565
Reviewed-by: Xisco Fauli <xiscofauli at libreoffice.org>
Signed-off-by: Xisco Fauli <xiscofauli at libreoffice.org>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/100615
Reviewed-by: Michael Stahl <michael.stahl at cib.de>
diff --git a/basctl/source/basicide/baside2b.cxx b/basctl/source/basicide/baside2b.cxx
index d07222a44d27..c4d1f1e44b04 100644
--- a/basctl/source/basicide/baside2b.cxx
+++ b/basctl/source/basicide/baside2b.cxx
@@ -2188,39 +2188,41 @@ void WatchTreeListBox::RequestingChildren( SvTreeListEntry * pParent )
int nParentLevel = bArrayIsRootArray ? pItem->nDimLevel : 0;
int nThisLevel = nParentLevel + 1;
sal_Int32 nMin, nMax;
- pArray->GetDim32( nThisLevel, nMin, nMax );
- for( sal_Int32 i = nMin ; i <= nMax ; i++ )
+ if (pArray->GetDim32(nThisLevel, nMin, nMax))
{
- WatchItem* pChildItem = new WatchItem(pItem->maName);
+ for( sal_Int32 i = nMin ; i <= nMax ; i++ )
+ {
+ WatchItem* pChildItem = new WatchItem(pItem->maName);
- // Copy data and create name
+ // Copy data and create name
- OUStringBuffer aIndexStr = "(";
- pChildItem->mpArrayParentItem = pItem;
- pChildItem->nDimLevel = nThisLevel;
- pChildItem->nDimCount = pItem->nDimCount;
- pChildItem->vIndices.resize(pChildItem->nDimCount);
- sal_Int32 j;
- for( j = 0 ; j < nParentLevel ; j++ )
- {
- short n = pChildItem->vIndices[j] = pItem->vIndices[j];
- aIndexStr.append(OUString::number( n )).append(",");
+ OUStringBuffer aIndexStr = "(";
+ pChildItem->mpArrayParentItem = pItem;
+ pChildItem->nDimLevel = nThisLevel;
+ pChildItem->nDimCount = pItem->nDimCount;
+ pChildItem->vIndices.resize(pChildItem->nDimCount);
+ sal_Int32 j;
+ for( j = 0 ; j < nParentLevel ; j++ )
+ {
+ short n = pChildItem->vIndices[j] = pItem->vIndices[j];
+ aIndexStr.append(OUString::number( n )).append(",");
+ }
+ pChildItem->vIndices[nParentLevel] = sal::static_int_cast<short>( i );
+ aIndexStr.append(OUString::number( i )).append(")");
+
+ OUString aDisplayName;
+ WatchItem* pArrayRootItem = pChildItem->GetRootItem();
+ if( pArrayRootItem && pArrayRootItem->mpArrayParentItem )
+ aDisplayName = pItem->maDisplayName;
+ else
+ aDisplayName = pItem->maName;
+ aDisplayName += aIndexStr;
+ pChildItem->maDisplayName = aDisplayName;
+
+ SvTreeListEntry* pChildEntry = SvTreeListBox::InsertEntry( aDisplayName, pEntry );
+ nElementCount++;
+ pChildEntry->SetUserData( pChildItem );
}
- pChildItem->vIndices[nParentLevel] = sal::static_int_cast<short>( i );
- aIndexStr.append(OUString::number( i )).append(")");
-
- OUString aDisplayName;
- WatchItem* pArrayRootItem = pChildItem->GetRootItem();
- if( pArrayRootItem && pArrayRootItem->mpArrayParentItem )
- aDisplayName = pItem->maDisplayName;
- else
- aDisplayName = pItem->maName;
- aDisplayName += aIndexStr;
- pChildItem->maDisplayName = aDisplayName;
-
- SvTreeListEntry* pChildEntry = SvTreeListBox::InsertEntry( aDisplayName, pEntry );
- nElementCount++;
- pChildEntry->SetUserData( pChildItem );
}
if( nElementCount > 0 )
{
More information about the Libreoffice-commits
mailing list