diff options
| -rw-r--r-- | src/gsm/apn.c | 3 | ||||
| -rw-r--r-- | tests/gprs/gprs_test.c | 7 | 
2 files changed, 10 insertions, 0 deletions
| diff --git a/src/gsm/apn.c b/src/gsm/apn.c index 8d4b2bfc..f8303db9 100644 --- a/src/gsm/apn.c +++ b/src/gsm/apn.c @@ -53,6 +53,9 @@ char * osmo_apn_to_str(char *out_str, const uint8_t *apn_enc, size_t apn_enc_len  	char *str = out_str;  	size_t rest_chars = apn_enc_len; +	if (!apn_enc) +		return NULL; +  	while (rest_chars > 0 && apn_enc[0]) {  		size_t label_size = apn_enc[0];  		if (label_size + 1 > rest_chars) diff --git a/tests/gprs/gprs_test.c b/tests/gprs/gprs_test.c index be80e5c0..6f16fb2f 100644 --- a/tests/gprs/gprs_test.c +++ b/tests/gprs/gprs_test.c @@ -91,6 +91,13 @@ static void test_gsm_03_03_apn(void)  	}  	{ +		/* NULL input */ +		uint8_t input[] = { 0x1, 65 }; +		char *output = "LOL"; +		OSMO_ASSERT(osmo_apn_to_str(output, NULL, ARRAY_SIZE(input) - 1) == NULL); +	} + +	{  		uint8_t input[] = { 0x3, 65, 66, 67, 0x2, 90, 122 };  		const char *output = "ABC.Zz";  		char tmp[strlen(output) + 1]; | 
