diff options
| -rw-r--r-- | src/gsm/gsm48_ie.c | 8 | ||||
| -rw-r--r-- | tests/gsm0408/gsm0408_test.c | 10 | ||||
| -rw-r--r-- | tests/gsm0408/gsm0408_test.ok | 4 | 
3 files changed, 16 insertions, 6 deletions
| diff --git a/src/gsm/gsm48_ie.c b/src/gsm/gsm48_ie.c index 688698db..59f931b2 100644 --- a/src/gsm/gsm48_ie.c +++ b/src/gsm/gsm48_ie.c @@ -132,7 +132,13 @@ static int asc_to_bcd(const char asc)   *  \param[in] max_len Maximum Length of \a bcd_lv   *  \param[in] h_len Length of an optional heder between L and V portion   *  \param[in] input phone number as 0-terminated ASCII - *  \returns number of bytes used in \a bcd_lv */ + *  \returns number of bytes used in \a bcd_lv + * + * Depending on a context (e.g. called or calling party BCD number), the + * optional header between L and V parts can contain TON (Type Of Number), + * NPI (Numbering Plan Indication), presentation or screening indicator. + * NOTE: it is up to the caller to initialize this header! + */  int gsm48_encode_bcd_number(uint8_t *bcd_lv, uint8_t max_len,  		      int h_len, const char *input)  { diff --git a/tests/gsm0408/gsm0408_test.c b/tests/gsm0408/gsm0408_test.c index d7bae775..b5f80614 100644 --- a/tests/gsm0408/gsm0408_test.c +++ b/tests/gsm0408/gsm0408_test.c @@ -654,7 +654,7 @@ static const struct bcd_number_test {  		/* Encoding test */  		.enc_ascii = "123456", -		.enc_hex   = "0700000000214365", +		.enc_hex   = "07ffffffff214365",  		.enc_h_len = 4, /* LHV */  		.enc_rc    = 4 + 4, @@ -732,8 +732,8 @@ static const struct bcd_number_test {  static void test_bcd_number_encode_decode()  {  	const struct bcd_number_test *test; -	uint8_t buf_enc[0xff] = { 0 }; -	char buf_dec[0xff] = { 0 }; +	uint8_t buf_enc[0xff] = { 0xff }; +	char buf_dec[0xff] = { 0xff };  	size_t buf_len, i;  	int rc; @@ -780,6 +780,10 @@ static void test_bcd_number_encode_decode()  			printf("    -   Actual: (rc=%d) '%s'\n",  			       rc, (rc == 0 || rc == -ENOSPC) ? buf_dec : "(none)");  		} + +		/* Poison buffers between the test iterations */ +		memset(buf_enc, 0xff, sizeof(buf_enc)); +		memset(buf_dec, 0xff, sizeof(buf_dec));  	}  	printf("\n"); diff --git a/tests/gsm0408/gsm0408_test.ok b/tests/gsm0408/gsm0408_test.ok index 075886ec..844c2018 100644 --- a/tests/gsm0408/gsm0408_test.ok +++ b/tests/gsm0408/gsm0408_test.ok @@ -149,8 +149,8 @@ BSD number encoding / decoding test      -   Actual: (rc=0) '123456789'  - Running test: regular 6-digit MSISDN with optional header (LHV)    - Encoding ASCII (buffer limit=0) '123456'... -    - Expected: (rc=8) '0700000000214365' -    -   Actual: (rc=8) '0721436587214365' +    - Expected: (rc=8) '07ffffffff214365' +    -   Actual: (rc=8) '07ffffffff214365'    - Decoding HEX (buffer limit=0) '07deadbeef214365'...      - Expected: (rc=0) '123456'      -   Actual: (rc=0) '123456' | 
