summaryrefslogtreecommitdiff
path: root/epan
diff options
context:
space:
mode:
authorJeff Morriss <jeff.morriss.ws@gmail.com>2014-08-22 15:44:20 -0400
committerAnders Broman <a.broman58@gmail.com>2014-08-22 20:24:47 +0000
commit863b6646d6995b7f0a7c70aad845c7bb3f00dbc7 (patch)
tree9fa3632b74173ce3016740431aa4a0241a252061 /epan
parent2d74838e473a3e3414addb73c892efa470c4c0f1 (diff)
downloadwireshark-863b6646d6995b7f0a7c70aad845c7bb3f00dbc7.tar.gz
Replace a couple of implementations of unpack_digits() with tvb_bcd_dig_to_wmem_packet_str().
Change-Id: Ic9e740345fb3a748f6df4f624441bb947bbd9429 Reviewed-on: https://code.wireshark.org/review/3797 Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan')
-rw-r--r--epan/dissectors/packet-bssap.c55
-rw-r--r--epan/dissectors/packet-gsm_map.c54
-rw-r--r--epan/dissectors/packet-gsm_map.h3
-rw-r--r--epan/dissectors/packet-gtp.c2
4 files changed, 15 insertions, 99 deletions
diff --git a/epan/dissectors/packet-bssap.c b/epan/dissectors/packet-bssap.c
index 34d9868fbe..9132eb7291 100644
--- a/epan/dissectors/packet-bssap.c
+++ b/epan/dissectors/packet-bssap.c
@@ -619,53 +619,6 @@ static dgt_set_t Dgt_tbcd = {
};
#endif
-static dgt_set_t Dgt1_9_bcd = {
- {
- /* 0 1 2 3 4 5 6 7 8 9 a b c d e */
- '0','1','2','3','4','5','6','7','8','9','?','?','?','?','?','?'
- }
-};
-/* Assumes the rest of the tvb contains the digits to be turned into a string
- */
-static const char*
-unpack_digits(tvbuff_t *tvb, int offset, dgt_set_t *dgt, gboolean skip_first)
-{
- int length;
- guint8 octet;
- int i = 0;
- char *digit_str;
-
- length = tvb_reported_length(tvb);
- if (length < offset)
- return "";
- digit_str = (char *)wmem_alloc(wmem_packet_scope(), (length - offset)*2+1);
-
- while (offset < length) {
-
- octet = tvb_get_guint8(tvb, offset);
- if (!skip_first) {
- digit_str[i] = dgt->out[octet & 0x0f];
- i++;
- }
- skip_first = FALSE;
-
- /*
- * unpack second value in byte
- */
- octet = octet >> 4;
-
- if (octet == 0x0f) /* odd number bytes - hit filler */
- break;
-
- digit_str[i] = dgt->out[octet & 0x0f];
- i++;
- offset++;
-
- }
- digit_str[i]= '\0';
- return digit_str;
-}
-
static gboolean
check_ie(tvbuff_t *tvb, proto_tree *tree, int *offset, guint8 expected_ie)
{
@@ -983,7 +936,7 @@ dissect_bssap_imei(tvbuff_t *tvb, proto_tree *tree, int offset)
* The IMEI consists of 15 digits (see 3GPP TS 23.003).
*/
ie_tvb = tvb_new_subset_length(tvb, offset, ie_len);
- digit_str = unpack_digits(ie_tvb, 0, &Dgt1_9_bcd, FALSE);
+ digit_str = tvb_bcd_dig_to_wmem_packet_str(ie_tvb, 0, -1, NULL, FALSE);
proto_tree_add_string(ie_tree, hf_bssap_imei, ie_tvb, 0, -1, digit_str);
return offset + ie_len;
@@ -1011,7 +964,7 @@ dissect_bssap_imesiv(tvbuff_t *tvb, proto_tree *tree, int offset)
* The IMEISV consists of 16 digits (see 3GPP TS 23.003).
*/
ie_tvb = tvb_new_subset_length(tvb, offset, ie_len);
- digit_str = unpack_digits(ie_tvb, 0, &Dgt1_9_bcd, FALSE);
+ digit_str = tvb_bcd_dig_to_wmem_packet_str(ie_tvb, 0, -1, NULL, FALSE);
proto_tree_add_string(ie_tree, hf_bssap_imeisv, ie_tvb, 0, -1, digit_str);
return offset + ie_len;
@@ -1418,7 +1371,7 @@ dissect_bssap_sgsn_number(tvbuff_t *tvb, proto_tree *tree, int offset)
proto_tree_add_item(ie_tree, hf_bssap_numbering_plan_id, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
number_tvb = tvb_new_subset_length(tvb, offset, ie_len-1);
- digit_str = unpack_digits(number_tvb, 0, &Dgt1_9_bcd, FALSE);
+ digit_str = tvb_bcd_dig_to_wmem_packet_str(number_tvb, 0, -1, NULL, FALSE);
proto_tree_add_string(ie_tree, hf_bssap_sgsn_number, number_tvb, 0, -1, digit_str);
@@ -1570,7 +1523,7 @@ dissect_bssap_vlr_number(tvbuff_t *tvb, proto_tree *tree, int offset)
proto_tree_add_item(ie_tree, hf_bssap_numbering_plan_id, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
number_tvb = tvb_new_subset_length(tvb, offset, ie_len - 1);
- digit_str = unpack_digits(number_tvb, 0, &Dgt1_9_bcd, FALSE);
+ digit_str = tvb_bcd_dig_to_wmem_packet_str(number_tvb, 0, -1, NULL, FALSE);
proto_tree_add_string(ie_tree, hf_bssap_sgsn_number, number_tvb, 0, -1, digit_str);
return offset + ie_len - 1;
diff --git a/epan/dissectors/packet-gsm_map.c b/epan/dissectors/packet-gsm_map.c
index b25eb6b7dc..fb8deb50d1 100644
--- a/epan/dissectors/packet-gsm_map.c
+++ b/epan/dissectors/packet-gsm_map.c
@@ -2735,42 +2735,6 @@ static const value_string gsm_map_screening_ind_vals[] = {
{ 0, NULL }
};
-const char *
-unpack_digits(tvbuff_t *tvb, int offset) {
-
- int length;
- guint8 octet;
- int i=0;
- char *digit_str;
-
- length = tvb_reported_length(tvb);
- if (length < offset)
- return "";
- digit_str = (char *)wmem_alloc(wmem_packet_scope(), (length - offset)*2+1);
-
- while ( offset < length ){
-
- octet = tvb_get_guint8(tvb,offset);
- digit_str[i] = ((octet & 0x0f) + '0');
- i++;
-
- /*
- * unpack second value in byte
- */
- octet = octet >> 4;
-
- if (octet == 0x0f) /* odd number bytes - hit filler */
- break;
-
- digit_str[i] = ((octet & 0x0f) + '0');
- i++;
- offset++;
-
- }
- digit_str[i]= '\0';
- return digit_str;
-}
-
/* returns value in kb/s */
static guint
gsm_map_calc_bitrate(guint8 value){
@@ -3250,7 +3214,7 @@ dissect_gsm_map_msisdn(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
if(tvb_reported_length(tvb)==1)
return;
- digit_str = unpack_digits(tvb, 1);
+ digit_str = tvb_bcd_dig_to_wmem_packet_str(tvb, 1, -1, NULL, FALSE);
proto_tree_add_string(tree, hf_gsm_map_address_digits, tvb, 1, -1, digit_str);
@@ -3471,7 +3435,7 @@ dissect_gsm_map_TBCD_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of
if(tvb_reported_length(parameter_tvb)==0)
return offset;
- digit_str = unpack_digits(parameter_tvb, 0);
+ digit_str = tvb_bcd_dig_to_wmem_packet_str(parameter_tvb, 0, -1, NULL, FALSE);
proto_tree_add_string(tree, hf_gsm_map_TBCD_digits, parameter_tvb, 0, -1, digit_str);
@@ -8184,7 +8148,7 @@ dissect_gsm_map_ms_LocationNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
proto_tree_add_item(subtree, hf_gsm_map_locationnumber_apri, tvb, 1, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(subtree, hf_gsm_map_locationnumber_screening_ind, tvb, 1, 1, ENC_BIG_ENDIAN);
- digit_str = unpack_digits(tvb, 1);
+ digit_str = tvb_bcd_dig_to_wmem_packet_str(tvb, 1, -1, NULL, FALSE);
proto_tree_add_string(tree, hf_gsm_map_locationnumber_digits, tvb, 1, -1, digit_str);
@@ -20281,7 +20245,7 @@ dissect_NokiaMAP_Extensions_AllowedServiceData(gboolean implicit_tag _U_, tvbuff
/*--- End of included file: packet-gsm_map-fn.c ---*/
-#line 846 "../../asn1/gsm_map/packet-gsm_map-template.c"
+#line 810 "../../asn1/gsm_map/packet-gsm_map-template.c"
/* Specific translation for MAP V3 */
const value_string gsm_map_V1V2_opr_code_strings[] = {
@@ -20503,7 +20467,7 @@ const value_string gsm_map_opr_code_strings[] = {
/* Unknown or empty loop list OPERATION */
/*--- End of included file: packet-gsm_map-table.c ---*/
-#line 857 "../../asn1/gsm_map/packet-gsm_map-template.c"
+#line 821 "../../asn1/gsm_map/packet-gsm_map-template.c"
{ 0, NULL }
};
@@ -20720,7 +20684,7 @@ static const value_string gsm_map_err_code_string_vals[] = {
/* Unknown or empty loop list OPERATION */
/*--- End of included file: packet-gsm_map-table.c ---*/
-#line 863 "../../asn1/gsm_map/packet-gsm_map-template.c"
+#line 827 "../../asn1/gsm_map/packet-gsm_map-template.c"
{ 0, NULL }
};
#endif
@@ -29508,7 +29472,7 @@ void proto_register_gsm_map(void) {
NULL, HFILL }},
/*--- End of included file: packet-gsm_map-hfarr.c ---*/
-#line 2881 "../../asn1/gsm_map/packet-gsm_map-template.c"
+#line 2845 "../../asn1/gsm_map/packet-gsm_map-template.c"
};
/* List of subtrees */
@@ -30217,7 +30181,7 @@ void proto_register_gsm_map(void) {
&ett_NokiaMAP_Extensions_AllowedServiceData,
/*--- End of included file: packet-gsm_map-ettarr.c ---*/
-#line 2913 "../../asn1/gsm_map/packet-gsm_map-template.c"
+#line 2877 "../../asn1/gsm_map/packet-gsm_map-template.c"
};
static ei_register_info ei[] = {
@@ -30320,7 +30284,7 @@ void proto_register_gsm_map(void) {
/*--- End of included file: packet-gsm_map-dis-tab.c ---*/
-#line 2950 "../../asn1/gsm_map/packet-gsm_map-template.c"
+#line 2914 "../../asn1/gsm_map/packet-gsm_map-template.c"
oid_add_from_string("ericsson-gsm-Map-Ext","1.2.826.0.1249.58.1.0" );
oid_add_from_string("accessTypeNotAllowed-id","1.3.12.2.1107.3.66.1.2");
/*oid_add_from_string("map-ac networkLocUp(1) version3(3)","0.4.0.0.1.0.1.3" );
diff --git a/epan/dissectors/packet-gsm_map.h b/epan/dissectors/packet-gsm_map.h
index 13a4ac795c..3c42c19876 100644
--- a/epan/dissectors/packet-gsm_map.h
+++ b/epan/dissectors/packet-gsm_map.h
@@ -52,7 +52,6 @@ typedef struct _gsm_map_tap_rec_t {
#define SMS_ENCODING_UCS2_LANG 5
WS_DLL_PUBLIC const value_string gsm_map_opr_code_strings[];
-const char* unpack_digits(tvbuff_t *tvb, int offset);
extern const value_string ssCode_vals[];
extern const value_string gsm_map_PDP_Type_Organisation_vals[];
@@ -276,7 +275,7 @@ int dissect_gsm_ss_LocationMethod(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
int dissect_NokiaMAP_Extensions_ServiceKey(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
/*--- End of included file: packet-gsm_map-exp.h ---*/
-#line 58 "../../asn1/gsm_map/packet-gsm_map-template.h"
+#line 57 "../../asn1/gsm_map/packet-gsm_map-template.h"
#endif /* PACKET_GSM_MAP_H */
diff --git a/epan/dissectors/packet-gtp.c b/epan/dissectors/packet-gtp.c
index d3de2c5e0d..87377b9b6a 100644
--- a/epan/dissectors/packet-gtp.c
+++ b/epan/dissectors/packet-gtp.c
@@ -5823,7 +5823,7 @@ decode_gtp_imeisv(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tre
* set to '1111'. Both IMEI and IMEISV are BCD encoded.
*/
next_tvb = tvb_new_subset_length(tvb, offset, length);
- digit_str = unpack_digits(next_tvb, 0);
+ digit_str = tvb_bcd_dig_to_wmem_packet_str(next_tvb, 0, -1, NULL, FALSE);
proto_tree_add_string(ext_imeisv, hf_gtp_ext_imeisv, next_tvb, 0, -1, digit_str);
proto_item_append_text(te, ": %s", digit_str);