| File: | sal/qa/rtl/alloc/rtl_alloc.cxx |
| Location: | line 94, column 9 |
| Description: | Null pointer passed as an argument to a 'nonnull' parameter |
| 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 | |
| 37 | namespace 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 | |
| 56 | class Memory : public CppUnit::TestFixture |
| 57 | { |
| 58 | // for normal alloc functions |
| 59 | char *m_pMemory; |
| 60 | sal_uInt32 m_nSizeOfMemory; |
| 61 | |
| 62 | public: |
| 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); |
| 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); |
Null pointer passed as an argument to a 'nonnull' parameter | |
| 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 | |
| 104 | class TestZeroMemory : public CppUnit::TestFixture |
| 105 | { |
| 106 | // for zero functions |
| 107 | char *m_pZeroMemory; |
| 108 | sal_uInt32 m_nSizeOfZeroMemory; |
| 109 | |
| 110 | public: |
| 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 | // ----------------------------------------------------------------------------- |
| 147 | CPPUNIT_TEST_SUITE_REGISTRATION(rtl_alloc::Memory)static CppUnit::AutoRegisterSuite< rtl_alloc::Memory > autoRegisterRegistry__147; |
| 148 | CPPUNIT_TEST_SUITE_REGISTRATION(rtl_alloc::TestZeroMemory)static CppUnit::AutoRegisterSuite< rtl_alloc::TestZeroMemory > autoRegisterRegistry__148; |
| 149 | } // namespace rtl_alloc |
| 150 | |
| 151 | |
| 152 | CPPUNIT_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: */ |