Fix parsing of mcc_mnc code

The digits above 0-9 were not handled correctly
This commit is contained in:
Denis Kenzior 2009-07-13 18:19:06 -05:00
parent f5e9b2147a
commit 0fd5080630
1 changed files with 12 additions and 12 deletions

View File

@ -165,26 +165,26 @@ void sim_pnn_operator_free(struct sim_pnn_operator *oper)
static void parse_mcc_mnc(const guint8 *bcd, char *mcc, char *mnc)
{
static const char digit_lut[] = "0123456789*#abd\0";
guint8 digit;
digit = (bcd[0] >> 0) & 0xf;
if (digit != 0xf)
*mcc ++ = '0' + digit;
*mcc++ = digit_lut[digit];
digit = (bcd[0] >> 4) & 0xf;
if (digit != 0xf)
*mcc ++ = '0' + digit;
*mcc++ = digit_lut[digit];
digit = (bcd[1] >> 0) & 0xf;
if (digit != 0xf)
*mcc ++ = '0' + digit;
*mcc++ = digit_lut[digit];
digit = (bcd[2] >> 0) & 0xf;
if (digit != 0xf)
*mnc ++ = '0' + digit;
*mnc++ = digit_lut[digit];
digit = (bcd[2] >> 4) & 0xf;
if (digit != 0xf)
*mnc ++ = '0' + digit;
*mnc++ = digit_lut[digit];
digit = (bcd[1] >> 4) & 0xf;
if (digit != 0xf)
*mnc ++ = '0' + digit;
*mnc++ = digit_lut[digit];
}
static gint spdi_operator_compare(gconstpointer a, gconstpointer b)