annotate src/gpf3/ccd/bcdeven.c @ 516:1ed9de6c90bd

src/g23m-gsm/sms/sms_for.c: bogus malloc removed The new error handling code that was not present in TCS211 blob version contains a malloc call that is bogus for 3 reasons: 1) The memory allocation in question is not needed in the first place; 2) libc malloc is used instead of one of the firmware's proper ways; 3) The memory allocation is made inside a function and then never freed, i.e., a memory leak. This bug was caught in gcc-built FreeCalypso fw projects (Citrine and Selenite) because our gcc environment does not allow any use of libc malloc (any reference to malloc produces a link failure), but this code from TCS3.2 is wrong even for Magnetite: if this code path is executed repeatedly over a long time, the many small allocations made by this malloc call without a subsequent free will eventually exhaust the malloc heap provided by the TMS470 environment, malloc will start returning NULL, and the bogus code will treat it as an error. Because the memory allocation in question is not needed at all, the fix entails simply removing it.
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 22 Jul 2018 06:04:49 +0000
parents c41a534f33c6
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 +-----------------------------------------------------------------------------
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 | Project :
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 | Modul : bcdeven.c
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 +-----------------------------------------------------------------------------
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 | Copyright 2002 Texas Instruments Berlin, AG
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 | All rights reserved.
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 |
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 | This file is confidential and a trade secret of Texas
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 | Instruments Berlin, AG
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 | The receipt of or possession of this file does not convey
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 | any rights to reproduce or disclose its contents or to
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 | manufacture, use, or sell anything it may describe, in
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 | whole, or in part, without the specific written consent of
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 | Texas Instruments Berlin, AG.
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 +-----------------------------------------------------------------------------
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 | Purpose : Definition of encoding and decoding functions for BCDEVEN elements
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 +-----------------------------------------------------------------------------
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 */
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 /*
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 * standard definitions like GLOBAL, UCHAR, ERROR etc.
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 */
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 #include "typedefs.h"
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 #include "header.h"
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 /*
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 * Prototypes of ccd (USE_DRIVER EQ undef) for prototypes only
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 * look at ccdapi.h
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 */
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 #undef USE_DRIVER
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 #include "ccdapi.h"
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 /*
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 * Types and functions for bit access and manipulation
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 */
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 #include "ccd_globs.h"
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 #include "bitfun.h"
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 /*
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 * Prototypes of ccd internal functions
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43 */
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 #include "ccd.h"
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 /*
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 * Declaration of coder/decoder tables
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 */
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49 #include "ccdtable.h"
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50 #include "ccddata.h"
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52 #ifndef RUN_INT_RAM
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53 /*
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54 +--------------------------------------------------------------------+
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55 | PROJECT : CCD (6144) MODULE : CCD |
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56 | STATE : code ROUTINE : cdc_bcdeven_decode |
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
57 +--------------------------------------------------------------------+
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
58
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59 PURPOSE :
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
60
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
61 */
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
62
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
63
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
64 SHORT cdc_bcdeven_decode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs)
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
65 {
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
66 #ifdef DEBUG_CCD
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
67 #ifndef CCD_SYMBOLS
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
68 TRACE_CCD (globs, "cdc_bcdeven_decode()");
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
69 #else
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
70 TRACE_CCD (globs, "cdc_bcdeven_decode() %s", ccddata_get_alias((USHORT) e_ref, 1));
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
71 #endif
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
72 #endif
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
73 cdc_BCD_decode (e_ref, 0, globs);
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
74 return 1;
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
75 }
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
76 #endif /* !RUN_INT_RAM */
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
77
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
78 #ifndef RUN_INT_RAM
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
79 /*
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
80 +--------------------------------------------------------------------+
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
81 | PROJECT : CCD (6144) MODULE : CCD |
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
82 | STATE : code ROUTINE : cdc_bcdeven_encode |
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
83 +--------------------------------------------------------------------+
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
84
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
85 PURPOSE : encoding a Bytearray, that contain a BCD Number, into
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
86 the bitstream.
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
87 */
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
88
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
89
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
90 SHORT cdc_bcdeven_encode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs)
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
91 {
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
92 #ifdef DEBUG_CCD
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
93 #ifndef CCD_SYMBOLS
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
94 TRACE_CCD (globs, "cdc_bcdeven_encode()");
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
95 #else
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
96 TRACE_CCD (globs, "cdc_bcdeven_encode() %s", ccddata_get_alias((USHORT) e_ref, 1));
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
97 #endif
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
98 #endif
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
99 cdc_BCD_encode (e_ref, 0, globs);
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
100 return 1;
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
101 }
c41a534f33c6 src/gpf3: preened GPF goo from TCS3.2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
102 #endif /* !RUN_INT_RAM */