Bug Summary

File:libsynthesis/src/syncml_tk/src/sml/xlt/all/xltmetinf.c
Warning:line 127, column 5
Value stored to 'pScanner' is never read

Annotated Source Code

1/**
2 * @file
3 * MetaInf DTD related functions for the en-/decoder
4 *
5 * @target_system all
6 * @target_os all
7 */
8
9/*
10 * Copyright Notice
11 * Copyright (c) Ericsson, IBM, Lotus, Matsushita Communication
12 * Industrial Co., Ltd., Motorola, Nokia, Openwave Systems, Inc.,
13 * Palm, Inc., Psion, Starfish Software, Symbian, Ltd. (2001).
14 * All Rights Reserved.
15 * Implementation of all or part of any Specification may require
16 * licenses under third party intellectual property rights,
17 * including without limitation, patent rights (such a third party
18 * may or may not be a Supporter). The Sponsors of the Specification
19 * are not responsible and shall not be held responsible in any
20 * manner for identifying or failing to identify any or all such
21 * third party intellectual property rights.
22 *
23 * THIS DOCUMENT AND THE INFORMATION CONTAINED HEREIN ARE PROVIDED
24 * ON AN "AS IS" BASIS WITHOUT WARRANTY OF ANY KIND AND ERICSSON, IBM,
25 * LOTUS, MATSUSHITA COMMUNICATION INDUSTRIAL CO. LTD, MOTOROLA,
26 * NOKIA, PALM INC., PSION, STARFISH SOFTWARE AND ALL OTHER SYNCML
27 * SPONSORS DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
28 * BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
29 * HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
30 * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT
31 * SHALL ERICSSON, IBM, LOTUS, MATSUSHITA COMMUNICATION INDUSTRIAL CO.,
32 * LTD, MOTOROLA, NOKIA, PALM INC., PSION, STARFISH SOFTWARE OR ANY
33 * OTHER SYNCML SPONSOR BE LIABLE TO ANY PARTY FOR ANY LOSS OF
34 * PROFITS, LOSS OF BUSINESS, LOSS OF USE OF DATA, INTERRUPTION OF
35 * BUSINESS, OR FOR DIRECT, INDIRECT, SPECIAL OR EXEMPLARY, INCIDENTAL,
36 * PUNITIVE OR CONSEQUENTIAL DAMAGES OF ANY KIND IN CONNECTION WITH
37 * THIS DOCUMENT OR THE INFORMATION CONTAINED HEREIN, EVEN IF ADVISED
38 * OF THE POSSIBILITY OF SUCH LOSS OR DAMAGE.
39 *
40 * The above notice and this paragraph must be included on all copies
41 * of this document that are made.
42 *
43 */
44#include "syncml_tk_prefix_file.h" // %%% luz: needed for precompiled headers in eVC++
45
46#include "define.h"
47#ifdef __USE_METINF__
48
49#include "smlmetinfdtd.h"
50#include "xlttags.h"
51#include "xltmetinf.h"
52#include "xlttagtbl.h"
53#include "xltenc.h"
54#include "xltencwbxml.h"
55
56#include "define.h"
57#include "libstr.h"
58#include "smlerr.h"
59#include "smldtd.h"
60#include "libmem.h"
61#include "libutil.h"
62/* extern */
63 extern SML_API void smlFreeMetinfAnchor(SmlMetInfAnchorPtr_t data) XLT_FUNC;
64 extern SML_API void smlFreeMetinfMem(SmlMetInfMemPtr_t data) XLT_FUNC;
65 extern SML_API void smlFreeMetinfMetinf(SmlMetInfMetInfPtr_t data) XLT_FUNC;
66
67
68/* decoder callbacks */
69Ret_t buildMetInfAnchorCmd(XltDecoderPtr_t pDecoder, VoidPtr_t *ppElem) {
70 XltDecScannerPtr_t pScanner;
71 SmlMetInfAnchorPtr_t pAnchor;
72 Ret_t rc;
73
74 pScanner = pDecoder->scanner;
75
76 if (*ppElem != NULL((void*)0))
77 return SML_DECODEERROR(SML_ERR_XLT_INVAL_SYNCML_DOC,pScanner,"buildMetInfAnchorCmd")show_decode_error(0x200B,(XltDecScannerPtr_t)pScanner,"buildMetInfAnchorCmd"
)
;
78
79 if ((pAnchor = (SmlMetInfAnchorPtr_t)smlLibMalloc(sizeof(SmlMetInfAnchor_t))) == NULL((void*)0))
80 return SML_ERR_NOT_ENOUGH_SPACE0x11;
81 smlLibMemset(pAnchor, 0, sizeof(SmlMetInfAnchor_t));
82
83 if (IS_EMPTY(pScanner->curtok)((pScanner->curtok)->type == TOK_TAG_EMPTY)) {
84 *ppElem = pAnchor;
85 return SML_ERR_OK0x00;
86 }
87
88 if (((rc = nextToken(pDecoder)) != SML_ERR_OK0x00)) {
89 smlFreeMetinfAnchor(pAnchor);
90 //smlLibFree(pAnchor);
91 return rc;
92 }
93
94 while (pScanner->curtok->type != TOK_TAG_END) {
95 switch (pScanner->curtok->tagid) {
96 /* PCDATA elements */
97 case TN_METINF_LAST:
98 rc = buildPCData(pDecoder, (VoidPtr_t)&pAnchor->last);
99 break;
100 case TN_METINF_NEXT:
101 rc = buildPCData(pDecoder, (VoidPtr_t)&pAnchor->next);
102 break;
103 default:
104 rc = SML_DECODEERROR(SML_ERR_XLT_INVAL_SYNCML_DOC,pScanner,"buildMetInfAnchorCmd_2")show_decode_error(0x200B,(XltDecScannerPtr_t)pScanner,"buildMetInfAnchorCmd_2"
)
;
105 }
106 if (rc != SML_ERR_OK0x00) {
107 smlFreeMetinfAnchor(pAnchor);
108 //smlLibFree(pAnchor);
109 return rc;
110 }
111 if (((rc = nextToken(pDecoder)) != SML_ERR_OK0x00)) {
112 smlFreeMetinfAnchor(pAnchor);
113 //smlLibFree(pAnchor);
114 return rc;
115 }
116 }
117 *ppElem = pAnchor;
118
119 return SML_ERR_OK0x00;
120}
121
122Ret_t buildMetinfNextCmd(XltDecoderPtr_t pDecoder, VoidPtr_t *ppElem) {
123 XltDecScannerPtr_t pScanner;
124 SmlMetInfAnchorPtr_t pAnchor;
125 Ret_t rc;
126
127 pScanner = pDecoder->scanner;
Value stored to 'pScanner' is never read
128
129 if (*ppElem == NULL((void*)0)) {
130 if ((pAnchor = (SmlMetInfAnchorPtr_t)smlLibMalloc(sizeof(SmlMetInfAnchor_t))) == NULL((void*)0))
131 return SML_ERR_NOT_ENOUGH_SPACE0x11;
132 smlLibMemset(pAnchor, 0, sizeof(SmlMetInfAnchor_t));
133 } else {
134 pAnchor = (SmlMetInfAnchorPtr_t)*ppElem;
135 if (pAnchor->next != NULL((void*)0))
136 return SML_ERR_XLT_INVAL_SYNCML_DOC0x200B;
137 }
138
139 rc = buildPCData(pDecoder, (VoidPtr_t)&pAnchor->next);
140
141 if (rc != SML_ERR_OK0x00 && ppElem == NULL((void*)0)) {
142 smlFreeMetinfAnchor(pAnchor);
143 return rc;
144 }
145
146 if (ppElem == NULL((void*)0)) {
147 *ppElem = pAnchor;
148 }
149
150 return SML_ERR_OK0x00;
151}
152
153Ret_t buildMetInfMemCmd(XltDecoderPtr_t pDecoder, VoidPtr_t *ppElem) {
154 XltDecScannerPtr_t pScanner;
155 SmlMetInfMemPtr_t pMem;
156 Ret_t rc;
157
158 pScanner = pDecoder->scanner;
159
160 if (*ppElem != NULL((void*)0))
161 return SML_DECODEERROR(SML_ERR_XLT_INVAL_SYNCML_DOC, pScanner, "buildMetInfMemCmd")show_decode_error(0x200B,(XltDecScannerPtr_t)pScanner,"buildMetInfMemCmd"
)
;
162
163 if ((pMem = (SmlMetInfMemPtr_t)smlLibMalloc(sizeof(SmlMetInfMem_t))) == NULL((void*)0))
164 return SML_ERR_NOT_ENOUGH_SPACE0x11;
165 smlLibMemset(pMem, 0, sizeof(SmlMetInfMem_t));
166
167 if (IS_EMPTY(pScanner->curtok)((pScanner->curtok)->type == TOK_TAG_EMPTY)) {
168 *ppElem = pMem;
169 return SML_ERR_OK0x00;
170 }
171
172 if (((rc = nextToken(pDecoder)) != SML_ERR_OK0x00)) {
173 smlFreeMetinfMem(pMem);
174 //smlLibFree(pMem);
175 return rc;
176 }
177
178 while (pScanner->curtok->type != TOK_TAG_END) {
179 switch (pScanner->curtok->tagid) {
180 /* %%% luz 2005-08-24 :this definition was plain wrong - shared is a flag, not Pcdata!
181 case TN_METINF_SHAREDMEM:
182 rc = buildPCData(pDecoder, (VoidPtr_t)&pMem->shared);
183 break; */
184
185 /* PCDATA elements */
186 case TN_METINF_FREEMEM:
187 rc = buildPCData(pDecoder, (VoidPtr_t)&pMem->free);
188 break;
189 case TN_METINF_FREEID:
190 rc = buildPCData(pDecoder, (VoidPtr_t)&pMem->freeid);
191 break;
192
193 /* flags */
194 case TN_METINF_SHAREDMEM:
195 pMem->flags |= SmlMetInfSharedMem_f0x0002;
196 rc = buildEmptyTag(pDecoder); // allow for <tag></tag> instead of <tag/>
197 break;
198
199 default:
200 rc = SML_DECODEERROR(SML_ERR_XLT_INVAL_SYNCML_DOC, pScanner, "buildMetInfMemCmd_2")show_decode_error(0x200B,(XltDecScannerPtr_t)pScanner,"buildMetInfMemCmd_2"
)
;
201 }
202 if (rc != SML_ERR_OK0x00) {
203 smlFreeMetinfMem(pMem);
204 //smlLibFree(pMem);
205 return rc;
206 }
207 if (((rc = nextToken(pDecoder)) != SML_ERR_OK0x00)) {
208 smlFreeMetinfMem(pMem);
209 //smlLibFree(pMem);
210 return rc;
211 }
212 }
213 *ppElem = pMem;
214
215 return SML_ERR_OK0x00;
216}
217
218Ret_t buildMetInfMetInfCmd(XltDecoderPtr_t pDecoder, VoidPtr_t *ppElem) {
219 XltDecScannerPtr_t pScanner;
220 SmlMetInfMetInfPtr_t pMeta;
221 Ret_t rc;
222 int foundWrapper = 0;
223
224 pScanner = pDecoder->scanner;
225
226 if (*ppElem != NULL((void*)0))
227 return SML_DECODEERROR(SML_ERR_XLT_INVAL_SYNCML_DOC, pScanner, "buildMetInfMetInfCmd")show_decode_error(0x200B,(XltDecScannerPtr_t)pScanner,"buildMetInfMetInfCmd"
)
;
228
229 if ((pMeta = (SmlMetInfMetInfPtr_t)smlLibMalloc(sizeof(SmlMetInfMetInf_t))) == NULL((void*)0))
230 return SML_ERR_NOT_ENOUGH_SPACE0x11;
231 smlLibMemset(pMeta, 0, sizeof(SmlMetInfMetInf_t));
232
233 if (IS_EMPTY(pScanner->curtok)((pScanner->curtok)->type == TOK_TAG_EMPTY)) {
234 *ppElem = pMeta;
235 return SML_ERR_OK0x00;
236 }
237
238 if (((rc = nextToken(pDecoder)) != SML_ERR_OK0x00)) {
239 smlFreeMetinfMetinf(pMeta);
240 //smlLibFree(pMeta);
241 return rc;
242 }
243
244 while (pScanner->curtok->type != TOK_TAG_END) {
245 switch (pScanner->curtok->tagid) {
246 case TN_METINF_METINF: /* ignore - it's just the wrapper tag */
247 foundWrapper = 1;
248 break;
249 case TN_METINF_FORMAT:
250 rc = buildPCData(pDecoder, (VoidPtr_t)&pMeta->format);
251 break;
252 case TN_METINF_TYPE:
253 rc = buildPCData(pDecoder, (VoidPtr_t)&pMeta->type);
254 break;
255 case TN_METINF_MARK:
256 rc = buildPCData(pDecoder, (VoidPtr_t)&pMeta->mark);
257 break;
258 case TN_METINF_SIZE:
259 rc = buildPCData(pDecoder, (VoidPtr_t)&pMeta->size);
260 break;
261 case TN_METINF_VERSION:
262 rc = buildPCData(pDecoder, (VoidPtr_t)&pMeta->version);
263 break;
264 case TN_METINF_NEXTNONCE:
265 rc = buildPCData(pDecoder, (VoidPtr_t)&pMeta->nextnonce);
266 break;
267 case TN_METINF_ANCHOR:
268 rc = buildMetInfAnchorCmd(pDecoder, (VoidPtr_t)&pMeta->anchor);
269 break;
270 case TN_METINF_MAXMSGSIZE:
271 rc = buildPCData(pDecoder, (VoidPtr_t)&pMeta->maxmsgsize);
272 break;
273 /* SCTSTK - 18/03/2002 S.H. 2002-04-05: SyncML 1.1 */
274 case TN_METINF_MAXOBJSIZE:
275 rc = buildPCData(pDecoder, (VoidPtr_t)&pMeta->maxobjsize);
276 break;
277 case TN_METINF_MEM:
278 rc = buildMetInfMemCmd(pDecoder, (VoidPtr_t)&pMeta->mem);
279 break;
280 case TN_METINF_EMI:
281 rc = buildPCDataList(pDecoder, (VoidPtr_t)&pMeta->emi);
282 break;
283
284 /* SyncML DS 1.2, Synthesis/luz 2005-08-24 */
285 case TN_METINF_FIELDLEVEL:
286 pMeta->flags |= SmlMetInfFieldLevel_f0x0004;
287 rc = buildEmptyTag(pDecoder); // allow for <tag></tag> instead of <tag/>
288 break;
289
290 /* Next without Anchor, Andris Pavenis 2012-05-29 */
291 case TN_METINF_NEXT:
292 rc = buildMetinfNextCmd(pDecoder, (VoidPtr_t)&pMeta->anchor);
293 break;
294
295 default:
296 rc = SML_DECODEERROR(SML_ERR_XLT_INVAL_SYNCML_DOC, pScanner, "buildMetInfMetInfCmd_2")show_decode_error(0x200B,(XltDecScannerPtr_t)pScanner,"buildMetInfMetInfCmd_2"
)
;
297 }
298 if (rc != SML_ERR_OK0x00) {
299 smlFreeMetinfMetinf(pMeta);
300 //smlLibFree(pMeta);
301 return rc;
302 }
303 if (((rc = nextToken(pDecoder)) != SML_ERR_OK0x00)) {
304 smlFreeMetinfMetinf(pMeta);
305 //smlLibFree(pMeta);
306 return rc;
307 }
308 }
309
310 if (foundWrapper) {
311 /* Optional Metinf root tag was used in this message.
312 * The actual token is the closing root tag.
313 * It is required that the scanner points to the first tag _after_
314 * <MetInf>...</MetInf>, so we just skip to the next token and continue.
315 */
316 if (((rc = nextToken(pDecoder)) != SML_ERR_OK0x00)) {
317 smlFreeMetinfMetinf(pMeta);
318 //smlLibFree(pMeta);
319 return rc;
320 }
321 }
322 *ppElem = pMeta;
323
324 return SML_ERR_OK0x00;
325}
326
327
328
329/* see xltenc.c:XltEncBlock for description of parameters */
330Ret_t metinfEncBlock(XltTagID_t tagId, XltRO_t reqOptFlag, const VoidPtr_t pContent, SmlEncoding_t enc, BufferMgmtPtr_t pBufMgr, SmlPcdataExtension_t attFlag) {
331 //Return variable
332 Ret_t _err;
333 SmlPcdataListPtr_t pList = NULL((void*)0);
334 //Check if pContent of a required field is missing
335 if ((reqOptFlag == REQUIRED) && (pContent == NULL((void*)0)))
336 return SML_ERR_XLT_MISSING_CONT0x2001;
337 //Check if pContent of a optional field is missing -> if yes we are done
338 else if (pContent == NULL((void*)0))
339 return SML_ERR_OK0x00;
340
341 //Generate the commands -> see DTD
342 switch (tagId) {
343 case TN_METINF_ANCHOR:
344 if ((_err = xltGenerateTag(TN_METINF_ANCHOR, TT_BEG, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err;
345 if ((_err = metinfEncBlock(TN_METINF_LAST, OPTIONAL, ((SmlMetInfAnchorPtr_t) pContent)->last, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err;
346 if ((_err = metinfEncBlock(TN_METINF_NEXT, REQUIRED, ((SmlMetInfAnchorPtr_t) pContent)->next, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err;
347 if ((_err = xltGenerateTag(TN_METINF_ANCHOR, TT_END, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err;
348 break;
349 case TN_METINF_MEM:
350 if ((_err = xltGenerateTag(TN_METINF_MEM, TT_BEG, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err;
351 if ((_err = metinfEncBlock(TN_METINF_SHAREDMEM, OPTIONAL, &(((SmlMetInfMemPtr_t) pContent)->flags), enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err;
352 if ((_err = metinfEncBlock(TN_METINF_FREEMEM, REQUIRED, ((SmlMetInfMemPtr_t) pContent)->free, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err;
353 if ((_err = metinfEncBlock(TN_METINF_FREEID, REQUIRED, ((SmlMetInfMemPtr_t) pContent)->freeid, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err;
354 if ((_err = xltGenerateTag(TN_METINF_MEM, TT_END, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err;
355 break;
356 case TN_METINF_SHAREDMEM:
357 //set the flag in the (WB)XML document if the flag is in the pContent
358 if ((*((Flag_t *) pContent)) & (SmlMetInfSharedMem_f0x0002))
359 if ((_err = xltGenerateTag(tagId, TT_ALL, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err;
360 break;
361 case TN_METINF_FIELDLEVEL:
362 //set the flag in the (WB)XML document if the flag is in the pContent
363 if ((*((Flag_t *) pContent)) & (SmlMetInfFieldLevel_f0x0004))
364 if ((_err = xltGenerateTag(tagId, TT_ALL, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err;
365 break;
366 case TN_METINF_METINF:
367 //if ((_err = xltGenerateTag(TN_METINF_METINF, TT_BEG, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK) return _err;
368 if ((_err = metinfEncBlock(TN_METINF_FORMAT, OPTIONAL, ((SmlMetInfMetInfPtr_t) pContent)->format, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err;
369 if ((_err = metinfEncBlock(TN_METINF_TYPE, OPTIONAL, ((SmlMetInfMetInfPtr_t) pContent)->type, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err;
370 if ((_err = metinfEncBlock(TN_METINF_MARK, OPTIONAL, ((SmlMetInfMetInfPtr_t) pContent)->mark, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err;
371 if ((_err = metinfEncBlock(TN_METINF_SIZE, OPTIONAL, ((SmlMetInfMetInfPtr_t) pContent)->size, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err;
372 if ((_err = metinfEncBlock(TN_METINF_ANCHOR, OPTIONAL, ((SmlMetInfMetInfPtr_t) pContent)->anchor, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err;
373 if ((_err = metinfEncBlock(TN_METINF_VERSION, OPTIONAL, ((SmlMetInfMetInfPtr_t) pContent)->version, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err;
374 if ((_err = metinfEncBlock(TN_METINF_NEXTNONCE, OPTIONAL, ((SmlMetInfMetInfPtr_t) pContent)->nextnonce, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err;
375 if ((_err = metinfEncBlock(TN_METINF_MAXMSGSIZE,OPTIONAL, ((SmlMetInfMetInfPtr_t) pContent)->maxmsgsize, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err;
376 // %%% luz 2003-04-24: added maxobjsize generation (was missing = bug in original RTK 4.1)
377 if ((_err = metinfEncBlock(TN_METINF_MAXOBJSIZE,OPTIONAL, ((SmlMetInfMetInfPtr_t) pContent)->maxobjsize, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err;
378 pList = ((SmlMetInfMetInfPtr_t)pContent)->emi;
379 while (pList != NULL((void*)0)) {
380 if ((_err = xltEncBlock(TN_METINF_EMI, OPTIONAL, pList->data, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err;
381 pList = pList->next;
382 };
383
384 if ((_err = metinfEncBlock(TN_METINF_MEM, OPTIONAL, ((SmlMetInfMetInfPtr_t) pContent)->mem, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err;
385 /* SyncML DS 1.2, Synthesis/luz 2005-08-24 */
386 if ((_err = metinfEncBlock(TN_METINF_FIELDLEVEL,OPTIONAL, &(((SmlMetInfMetInfPtr_t) pContent)->flags), enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err;
387
388 //if ((_err = xltGenerateTag(TN_METINF_METINF, TT_END, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK) return _err;
389 break;
390 default: { // all leaf nodes (PCDATA#)
391 return xltEncPcdata(tagId, reqOptFlag, pContent, enc, pBufMgr, attFlag);
392 } /* eof default statement from switch tagid */
393 } /* eof switch tagid */
394 return SML_ERR_OK0x00;
395}
396
397#endif /* __USE_METINF__ */
398