summaryrefslogtreecommitdiffstats
path: root/src/simutil.c
diff options
context:
space:
mode:
authorDenis Kenzior <denis.kenzior@intel.com>2009-08-31 14:24:48 -0500
committerDenis Kenzior <denkenz@gmail.com>2009-08-31 15:12:37 -0500
commita96fde13622fe4408f5da452a4e9c7dfeea6415b (patch)
tree7609d1b098d7ddf4612972068de561b19bac89b4 /src/simutil.c
parent7ecebc9a3182e7d37a0284f19e2d80a965c8a470 (diff)
downloadofono-a96fde13622fe4408f5da452a4e9c7dfeea6415b.tar.bz2
Simplify overly complicated code
Diffstat (limited to 'src/simutil.c')
-rw-r--r--src/simutil.c32
1 files changed, 16 insertions, 16 deletions
diff --git a/src/simutil.c b/src/simutil.c
index 9c8b44bf..a73f96b5 100644
--- a/src/simutil.c
+++ b/src/simutil.c
@@ -407,38 +407,38 @@ gboolean sim_adn_parse(const unsigned char *data, int length,
{
int number_len;
int ton_npi;
+ const unsigned char *alpha;
+ int alpha_length;
if (length < 14)
return FALSE;
- /* Alpha-Identifier field */
- if (identifier) {
- if (length > 14)
- *identifier = sim_string_to_utf8(data, length - 14);
- else
- *identifier = NULL;
- }
- data += length - 14;
+ alpha = data;
+ alpha_length = length - 14;
+
+ data += alpha_length;
number_len = *data++;
ton_npi = *data++;
- if (number_len > 11 || ton_npi == 0xff) {
- if (identifier && *identifier) {
- g_free(*identifier);
- *identifier = NULL;
- }
-
+ if (number_len > 11 || ton_npi == 0xff)
return FALSE;
- }
ph->type = ton_npi;
/* BCD coded, however the TON/NPI is given by the first byte */
number_len -= 1;
-
extract_bcd_number(data, number_len, ph->number);
+ if (identifier == NULL)
+ return TRUE;
+
+ /* Alpha-Identifier field */
+ if (alpha_length > 0)
+ *identifier = sim_string_to_utf8(alpha, alpha_length);
+ else
+ *identifier = NULL;
+
return TRUE;
}