CVE:CVE-2008-2152
CNNVD:CNNVD-200806-146
OpenOffice（OOo）是美国阿帕奇（Apache）软件基金会的一款开源的办公软件套件。该套件包含文本文档、电子表格、演示文稿、绘图、数据库等。
OpenOffice的rtl_allocateMemory()函数没有执行整数溢出检查便以8字节为边界环绕分配请求，以下是sal/rtl/source/alloc_global.c中的漏洞代码： 
191void *
 192SAL_CALL rtl_allocateMemory (sal_Size n)
193{
194void * p = 0;
195if (n > 0)
196{
197addr;
198 size = RTL_MEMORY_ALIGN(n + RTL_MEMALIGN, RTL_MEMALIGN);
 199
200int index = (size - 1) >> RTL_MEMALIGN_SHIFT;
201OSL_ASSERT(RTL_MEMALIGN >= sizeof(sal_Size));
 202
203try_alloc:
 204if (index < RTL_MEMORY_CACHED_LIMIT >> RTL_MEMALIGN_SHIFT)
205addr = (char*)rtl_cache_alloc(g_alloc_table[index]);
206else
207addr = (char*)rtl_arena_alloc (gp_alloc_arena, &size);
208
在198行，如果n> UINT_MAX - RTL_MEMALIGN的话n + RTL_MEMALIGN计算就可能溢出，导致在try_alloc分配了不充分的缓冲区，然后将这个缓冲区返回给了调用函数。由于调用函数所认为缓冲区大小比实际大小大得多，因此可能触发堆溢出。
solution:Upgrade openoffice openoffice.org to a higher version than 2.0,2.1,2.2,2.3,2.4,and avoid the version 2.0,2.1,2.2,2.3,2.4