Bug Summary

File:sal/qa/rtl/alloc/rtl_alloc.cxx
Location:line 84, column 9
Description:Null pointer passed as an argument to a 'nonnull' parameter

Annotated Source Code

1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*************************************************************************
3 *
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 *
6 * Copyright 2000, 2010 Oracle and/or its affiliates.
7 *
8 * OpenOffice.org - a multi-platform office productivity suite
9 *
10 * This file is part of OpenOffice.org.
11 *
12 * OpenOffice.org is free software: you can redistribute it and/or modify
13 * it under the terms of the GNU Lesser General Public License version 3
14 * only, as published by the Free Software Foundation.
15 *
16 * OpenOffice.org is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU Lesser General Public License version 3 for more details
20 * (a copy is included in the LICENSE file that accompanied this code).
21 *
22 * You should have received a copy of the GNU Lesser General Public License
23 * version 3 along with OpenOffice.org. If not, see
24 * <http://www.openoffice.org/license.html>
25 * for a copy of the LGPLv3 License.
26 *
27 ************************************************************************/
28
29#include <rtl/alloc.h>
30#include <sal/types.h>
31#include <cppunit/TestFixture.h>
32#include <cppunit/extensions/HelperMacros.h>
33#include <cppunit/plugin/TestPlugIn.h>
34
35#include <memory.h>
36
37namespace rtl_alloc
38{
39
40 // small memory check routine, which return false, if there is a problem
41
42 bool checkMemory(char* _pMemory, sal_uInt32 _nSize, char _n)
43 {
44 bool bOk = true;
45
46 for (sal_uInt32 i=0;i<_nSize;i++)
47 {
48 if (_pMemory[i] != _n)
49 {
50 bOk = false;
51 }
52 }
53 return bOk;
54 }
55
56class Memory : public CppUnit::TestFixture
57{
58 // for normal alloc functions
59 char *m_pMemory;
60 sal_uInt32 m_nSizeOfMemory;
61
62public:
63 Memory()
64 : m_pMemory(NULL__null)
65 , m_nSizeOfMemory(1024)
66 {
67 }
68
69 // initialise your test code values here.
70 void setUp()
71 {
72 m_pMemory = (char*) rtl_allocateMemory( m_nSizeOfMemory );
73 }
74
75 void tearDown()
76 {
77 rtl_freeMemory(m_pMemory);
78 m_pMemory = NULL__null;
79 }
80
81 void rtl_allocateMemory_001()
82 {
83 CPPUNIT_ASSERT_MESSAGE( "Can get zero memory.", m_pMemory != NULL)( CppUnit::Asserter::failIf( !(m_pMemory != __null), CppUnit::
Message( "assertion failed", "Expression: " "m_pMemory != NULL"
, "Can get zero memory." ), CppUnit::SourceLine( "/usr/local/src/libreoffice/sal/qa/rtl/alloc/rtl_alloc.cxx"
, 83 ) ) )
;
84 memset(m_pMemory, 1, m_nSizeOfMemory);
Null pointer passed as an argument to a 'nonnull' parameter
85 CPPUNIT_ASSERT_MESSAGE( "memory contains wrong value.", checkMemory(m_pMemory, m_nSizeOfMemory, 1) == true)( CppUnit::Asserter::failIf( !(checkMemory(m_pMemory, m_nSizeOfMemory
, 1) == true), CppUnit::Message( "assertion failed", "Expression: "
"checkMemory(m_pMemory, m_nSizeOfMemory, 1) == true", "memory contains wrong value."
), CppUnit::SourceLine( "/usr/local/src/libreoffice/sal/qa/rtl/alloc/rtl_alloc.cxx"
, 85 ) ) )
;
86 }
87
88 void rtl_reallocateMemory_001()
89 {
90 sal_uInt32 nSize = 2 * 1024;
91 m_pMemory = (char*)rtl_reallocateMemory(m_pMemory, nSize);
92
93 CPPUNIT_ASSERT_MESSAGE( "Can reallocate memory.", m_pMemory != NULL)( CppUnit::Asserter::failIf( !(m_pMemory != __null), CppUnit::
Message( "assertion failed", "Expression: " "m_pMemory != NULL"
, "Can reallocate memory." ), CppUnit::SourceLine( "/usr/local/src/libreoffice/sal/qa/rtl/alloc/rtl_alloc.cxx"
, 93 ) ) )
;
94 memset(m_pMemory, 2, nSize);
95 CPPUNIT_ASSERT_MESSAGE( "memory contains wrong value.", checkMemory(m_pMemory, nSize, 2) == true)( CppUnit::Asserter::failIf( !(checkMemory(m_pMemory, nSize, 2
) == true), CppUnit::Message( "assertion failed", "Expression: "
"checkMemory(m_pMemory, nSize, 2) == true", "memory contains wrong value."
), CppUnit::SourceLine( "/usr/local/src/libreoffice/sal/qa/rtl/alloc/rtl_alloc.cxx"
, 95 ) ) )
;
96 }
97
98 CPPUNIT_TEST_SUITE(Memory)public: typedef Memory TestFixtureType; private: static const
CppUnit::TestNamer &getTestNamer__() { static CppUnit::TestNamer
testNamer( typeid(Memory) ); return testNamer; } public: typedef
CppUnit::TestSuiteBuilderContext<TestFixtureType> TestSuiteBuilderContextType
; static void addTestsToSuite( CppUnit::TestSuiteBuilderContextBase
&baseContext ) { TestSuiteBuilderContextType context( baseContext
)
;
99 CPPUNIT_TEST(rtl_allocateMemory_001)context.addTest( ( new CppUnit::TestCaller<TestFixtureType
>( context.getTestNameFor( "rtl_allocateMemory_001"), &
TestFixtureType::rtl_allocateMemory_001, context.makeFixture(
) ) ) )
;
100 CPPUNIT_TEST(rtl_reallocateMemory_001)context.addTest( ( new CppUnit::TestCaller<TestFixtureType
>( context.getTestNameFor( "rtl_reallocateMemory_001"), &
TestFixtureType::rtl_reallocateMemory_001, context.makeFixture
() ) ) )
;
101 CPPUNIT_TEST_SUITE_END()} static CppUnit::TestSuite *suite() { const CppUnit::TestNamer
&namer = getTestNamer__(); std::auto_ptr<CppUnit::TestSuite
> suite( new CppUnit::TestSuite( namer.getFixtureName() ))
; CppUnit::ConcretTestFixtureFactory<TestFixtureType> factory
; CppUnit::TestSuiteBuilderContextBase context( *suite.get(),
namer, factory ); TestFixtureType::addTestsToSuite( context )
; return suite.release(); } private: typedef int CppUnitDummyTypedefForSemiColonEnding__
;
102}; // class test
103
104class TestZeroMemory : public CppUnit::TestFixture
105{
106 // for zero functions
107 char *m_pZeroMemory;
108 sal_uInt32 m_nSizeOfZeroMemory;
109
110public:
111 TestZeroMemory()
112 : m_pZeroMemory(NULL__null)
113 , m_nSizeOfZeroMemory( 50 * 1024 * 1024 )
114 {
115 }
116
117 // initialise your test code values here.
118 void setUp()
119 {
120 m_pZeroMemory = (char*) rtl_allocateZeroMemory( m_nSizeOfZeroMemory );
121 }
122
123 void tearDown()
124 {
125 rtl_freeZeroMemory(m_pZeroMemory, m_nSizeOfZeroMemory);
126 // LLA: no check possible, may GPF if there is something wrong.
127 // CPPUNIT_ASSERT_MESSAGE( "Can get zero memory.", pZeroMemory != NULL);
128 }
129
130 // insert your test code here.
131
132 void rtl_allocateZeroMemory_001()
133 {
134 CPPUNIT_ASSERT_MESSAGE( "Can get zero memory.", m_pZeroMemory != NULL)( CppUnit::Asserter::failIf( !(m_pZeroMemory != __null), CppUnit
::Message( "assertion failed", "Expression: " "m_pZeroMemory != NULL"
, "Can get zero memory." ), CppUnit::SourceLine( "/usr/local/src/libreoffice/sal/qa/rtl/alloc/rtl_alloc.cxx"
, 134 ) ) )
;
135 CPPUNIT_ASSERT_MESSAGE( "memory contains wrong value.", checkMemory(m_pZeroMemory, m_nSizeOfZeroMemory, 0) == true)( CppUnit::Asserter::failIf( !(checkMemory(m_pZeroMemory, m_nSizeOfZeroMemory
, 0) == true), CppUnit::Message( "assertion failed", "Expression: "
"checkMemory(m_pZeroMemory, m_nSizeOfZeroMemory, 0) == true"
, "memory contains wrong value." ), CppUnit::SourceLine( "/usr/local/src/libreoffice/sal/qa/rtl/alloc/rtl_alloc.cxx"
, 135 ) ) )
;
136
137 memset(m_pZeroMemory, 3, m_nSizeOfZeroMemory);
138 CPPUNIT_ASSERT_MESSAGE( "memory contains wrong value.", checkMemory(m_pZeroMemory, m_nSizeOfZeroMemory, 3) == true)( CppUnit::Asserter::failIf( !(checkMemory(m_pZeroMemory, m_nSizeOfZeroMemory
, 3) == true), CppUnit::Message( "assertion failed", "Expression: "
"checkMemory(m_pZeroMemory, m_nSizeOfZeroMemory, 3) == true"
, "memory contains wrong value." ), CppUnit::SourceLine( "/usr/local/src/libreoffice/sal/qa/rtl/alloc/rtl_alloc.cxx"
, 138 ) ) )
;
139 }
140
141 CPPUNIT_TEST_SUITE(TestZeroMemory)public: typedef TestZeroMemory TestFixtureType; private: static
const CppUnit::TestNamer &getTestNamer__() { static CppUnit
::TestNamer testNamer( typeid(TestZeroMemory) ); return testNamer
; } public: typedef CppUnit::TestSuiteBuilderContext<TestFixtureType
> TestSuiteBuilderContextType; static void addTestsToSuite
( CppUnit::TestSuiteBuilderContextBase &baseContext ) { TestSuiteBuilderContextType
context( baseContext )
;
142 CPPUNIT_TEST(rtl_allocateZeroMemory_001)context.addTest( ( new CppUnit::TestCaller<TestFixtureType
>( context.getTestNameFor( "rtl_allocateZeroMemory_001"), &
TestFixtureType::rtl_allocateZeroMemory_001, context.makeFixture
() ) ) )
;
143 CPPUNIT_TEST_SUITE_END()} static CppUnit::TestSuite *suite() { const CppUnit::TestNamer
&namer = getTestNamer__(); std::auto_ptr<CppUnit::TestSuite
> suite( new CppUnit::TestSuite( namer.getFixtureName() ))
; CppUnit::ConcretTestFixtureFactory<TestFixtureType> factory
; CppUnit::TestSuiteBuilderContextBase context( *suite.get(),
namer, factory ); TestFixtureType::addTestsToSuite( context )
; return suite.release(); } private: typedef int CppUnitDummyTypedefForSemiColonEnding__
;
144};
145
146// -----------------------------------------------------------------------------
147CPPUNIT_TEST_SUITE_REGISTRATION(rtl_alloc::Memory)static CppUnit::AutoRegisterSuite< rtl_alloc::Memory > autoRegisterRegistry__147;
148CPPUNIT_TEST_SUITE_REGISTRATION(rtl_alloc::TestZeroMemory)static CppUnit::AutoRegisterSuite< rtl_alloc::TestZeroMemory
> autoRegisterRegistry__148
;
149} // namespace rtl_alloc
150
151
152CPPUNIT_PLUGIN_IMPLEMENT()extern "C" __attribute__ ((visibility("default"))) CppUnitTestPlugIn
*cppunitTestPlugIn(void) { static CppUnit::TestPlugInDefaultImpl
plugIn; return &plugIn; } typedef char __CppUnitPlugInExportFunctionDummyTypeDef
; int main( int, char *[] ) { return 0; } typedef char __CppUnitPlugInImplementMainDummyTypeDef
;
153
154/* vim:set shiftwidth=4 softtabstop=4 expandtab: */