Bug Summary

File:home/maarten/src/libreoffice/core/lotuswordpro/source/filter/lwpobjhdr.cxx
Warning:line 144, column 17
Value stored to 'nRefCount' is never read

Annotated Source Code

Press '?' to see keyboard shortcuts

clang -cc1 -cc1 -triple x86_64-unknown-linux-gnu -analyze -disable-free -disable-llvm-verifier -discard-value-names -main-file-name lwpobjhdr.cxx -analyzer-store=region -analyzer-opt-analyze-nested-blocks -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=cplusplus -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -mframe-pointer=all -fmath-errno -fno-rounding-math -mconstructor-aliases -munwind-tables -target-cpu x86-64 -fno-split-dwarf-inlining -debugger-tuning=gdb -resource-dir /usr/lib64/clang/11.0.0 -D BOOST_ERROR_CODE_HEADER_ONLY -D BOOST_SYSTEM_NO_DEPRECATED -D CPPU_ENV=gcc3 -D LINUX -D OSL_DEBUG_LEVEL=1 -D SAL_LOG_INFO -D SAL_LOG_WARN -D UNIX -D UNX -D X86_64 -D _PTHREADS -D _REENTRANT -D EXCEPTIONS_ON -D LIBO_INTERNAL_ONLY -I /home/maarten/src/libreoffice/core/workdir/UnpackedTarball/icu/source -I /home/maarten/src/libreoffice/core/workdir/UnpackedTarball/icu/source/i18n -I /home/maarten/src/libreoffice/core/workdir/UnpackedTarball/icu/source/common -I /home/maarten/src/libreoffice/core/external/boost/include -I /home/maarten/src/libreoffice/core/workdir/UnpackedTarball/boost -I /home/maarten/src/libreoffice/core/include -I /usr/lib/jvm/java-11-openjdk-11.0.9.10-0.0.ea.fc33.x86_64/include -I /usr/lib/jvm/java-11-openjdk-11.0.9.10-0.0.ea.fc33.x86_64/include/linux -I /home/maarten/src/libreoffice/core/config_host -I /home/maarten/src/libreoffice/core/workdir/UnoApiHeadersTarget/udkapi/normal -I /home/maarten/src/libreoffice/core/workdir/UnoApiHeadersTarget/offapi/normal -I /home/maarten/src/libreoffice/core/lotuswordpro/inc -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/10/../../../../include/c++/10 -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/10/../../../../include/c++/10/x86_64-redhat-linux -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/10/../../../../include/c++/10/backward -internal-isystem /usr/local/include -internal-isystem /usr/lib64/clang/11.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O0 -Wno-missing-braces -std=c++17 -fdeprecated-macro -fdebug-compilation-dir /home/maarten/src/libreoffice/core -ferror-limit 19 -fvisibility hidden -fvisibility-inlines-hidden -stack-protector 2 -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -debug-info-kind=constructor -analyzer-output=html -faddrsig -o /home/maarten/tmp/wis/scan-build-libreoffice/output/report/2020-10-07-141433-9725-1 -x c++ /home/maarten/src/libreoffice/core/lotuswordpro/source/filter/lwpobjhdr.cxx
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*************************************************************************
3 *
4 * The Contents of this file are made available subject to the terms of
5 * either of the following licenses
6 *
7 * - GNU Lesser General Public License Version 2.1
8 * - Sun Industry Standards Source License Version 1.1
9 *
10 * Sun Microsystems Inc., October, 2000
11 *
12 * GNU Lesser General Public License Version 2.1
13 * =============================================
14 * Copyright 2000 by Sun Microsystems, Inc.
15 * 901 San Antonio Road, Palo Alto, CA 94303, USA
16 *
17 * This library is free software; you can redistribute it and/or
18 * modify it under the terms of the GNU Lesser General Public
19 * License version 2.1, as published by the Free Software Foundation.
20 *
21 * This library is distributed in the hope that it will be useful,
22 * but WITHOUT ANY WARRANTY; without even the implied warranty of
23 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
24 * Lesser General Public License for more details.
25 *
26 * You should have received a copy of the GNU Lesser General Public
27 * License along with this library; if not, write to the Free Software
28 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
29 * MA 02111-1307 USA
30 *
31 *
32 * Sun Industry Standards Source License Version 1.1
33 * =================================================
34 * The contents of this file are subject to the Sun Industry Standards
35 * Source License Version 1.1 (the "License"); You may not use this file
36 * except in compliance with the License. You may obtain a copy of the
37 * License at http://www.openoffice.org/license.html.
38 *
39 * Software provided under this License is provided on an "AS IS" basis,
40 * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
41 * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
42 * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
43 * See the License for the specific provisions governing your rights and
44 * obligations concerning the Software.
45 *
46 * The Initial Developer of the Original Code is: IBM Corporation
47 *
48 * Copyright: 2008 by IBM Corporation
49 *
50 * All Rights Reserved.
51 *
52 * Contributor(s): _______________________________________
53 *
54 *
55 ************************************************************************/
56/*************************************************************************
57 * @file
58 * For LWP filter architecture prototype
59 ************************************************************************/
60
61#include <lwpobjhdr.hxx>
62#include <lwpobjtags.hxx>
63#include <lwpdefs.hxx>
64#include <lwpfilehdr.hxx>
65
66LwpObjectHeader::LwpObjectHeader()
67 : m_nTag(0), m_ID(), m_nSize(0), m_bCompressed(false)
68{}
69/**
70 * @descr read header from stream
71 */
72bool LwpObjectHeader::Read(LwpSvStream &rStrm)
73{
74 sal_uInt32 nVersionID = 0;
75 sal_uInt32 nRefCount = 0;
76 sal_uInt32 nNextVersionOffset = 0;
77 sal_uInt32 nHeaderSize = 0;
78
79 sal_Int64 nStartPos = rStrm.Tell();
80
81 if ( LwpFileHeader::m_nFileRevision < 0x000B)
82 {
83 rStrm.ReadUInt32( m_nTag );
84 m_ID.Read(&rStrm);
85 rStrm.ReadUInt32( nVersionID );
86 rStrm.ReadUInt32( nRefCount );
87 rStrm.ReadUInt32( nNextVersionOffset );
88
89 nHeaderSize = sizeof(m_nTag) + LwpObjectID::DiskSize()
90 + sizeof(nVersionID)
91 + sizeof(nRefCount)
92 + sizeof(nNextVersionOffset)
93 + sizeof(m_nSize);
94
95 if ((m_nTag == TAG_AMI0x3750574CUL) || ( LwpFileHeader::m_nFileRevision < 0x0006))
96 {
97 sal_uInt32 nNextVersionID = 0;
98 rStrm.ReadUInt32( nNextVersionID );
99 nHeaderSize += sizeof(nNextVersionID);
100 }
101 rStrm.ReadUInt32( m_nSize );
102 }
103 else
104 {
105 sal_uInt8 nFlagBits = 0;
106 sal_uInt16 VOType = 0;
107 rStrm.ReadUInt16( VOType );
108 rStrm.ReadUInt8( nFlagBits );
109
110 m_nTag = static_cast<sal_uInt32>(VOType);
111 m_ID.ReadIndexed(&rStrm);
112 nHeaderSize = sizeof(VOType) + sizeof(nFlagBits) + m_ID.DiskSizeIndexed();
113
114 sal_uInt8 tmpByte;
115 sal_uInt16 tmpShort;
116 switch (nFlagBits & VERSION_BITS)
117 {
118 case ONE_BYTE_VERSION:
119 rStrm.ReadUInt8( tmpByte );
120 nVersionID = static_cast<sal_uInt32>( tmpByte );
121 nHeaderSize++;
122 break;
123
124 case TWO_BYTE_VERSION:
125 rStrm.ReadUInt16( tmpShort );
126 nVersionID = static_cast<sal_uInt32>( tmpShort );
127 nHeaderSize += 2;
128 break;
129
130 case FOUR_BYTE_VERSION:
131 rStrm.ReadUInt32( nVersionID );
132 nHeaderSize += 4;
133 break;
134 case DEFAULT_VERSION: //fall through
135 default:
136 nVersionID = 2;
137 break; // nothing
138 }
139
140 switch (nFlagBits & REFCOUNT_BITS)
141 {
142 case ONE_BYTE_REFCOUNT:
143 rStrm.ReadUInt8( tmpByte );
144 nRefCount = static_cast<sal_uInt32>( tmpByte );
Value stored to 'nRefCount' is never read
145 nHeaderSize++;
146 break;
147
148 case TWO_BYTE_REFCOUNT:
149 rStrm.ReadUInt16( tmpShort );
150 nRefCount = static_cast<sal_uInt32>( tmpShort );
151 nHeaderSize += 2;
152 break;
153
154 case FOUR_BYTE_REFCOUNT: //through
155 default:
156 rStrm.ReadUInt32( nRefCount );
157 nHeaderSize += 4;
158 break;
159 }
160
161 if (nFlagBits & HAS_PREVOFFSET)
162 {
163 rStrm.ReadUInt32( nNextVersionOffset );
164 nHeaderSize += 4;
165 }
166 else
167 nNextVersionOffset = BAD_OFFSET0xFFFFFFFFUL;
168
169 switch (nFlagBits & SIZE_BITS)
170 {
171 case ONE_BYTE_SIZE:
172 rStrm.ReadUInt8( tmpByte );
173 m_nSize = static_cast<sal_uInt32>( tmpByte );
174 nHeaderSize++;
175 break;
176
177 case TWO_BYTE_SIZE:
178 rStrm.ReadUInt16( tmpShort );
179 m_nSize = static_cast<sal_uInt32>(tmpShort);
180 nHeaderSize += 2;
181 break;
182
183 case FOUR_BYTE_SIZE: //go through
184 default:
185 rStrm.ReadUInt32( m_nSize );
186 nHeaderSize += 4;
187 break;
188 }
189
190 if (nFlagBits & DATA_COMPRESSED)
191 {
192 m_bCompressed = true;
193 }
194 }
195 sal_Int64 nEndPos = rStrm.Tell();
196 return (nStartPos + nHeaderSize == nEndPos);
197}
198
199/* vim:set shiftwidth=4 softtabstop=4 expandtab: */