Don't use tvb_get_nstringz0(), use tvb_get_string_enc().

Change-Id: I8e654fa857fca6713198e3d20f2a14a0a444e935
Reviewed-on: https://code.wireshark.org/review/1037
Reviewed-by: Guy Harris <guy@alum.mit.edu>
This commit is contained in:
Guy Harris 2014-04-09 01:04:37 -07:00
parent 412c6cabcf
commit 7d83a8755a
6 changed files with 16 additions and 24 deletions

View File

@ -76,9 +76,9 @@ static int dissect_aim_buddylist_reject(tvbuff_t *tvb, packet_info *pinfo, proto
static int dissect_aim_buddylist_oncoming(tvbuff_t *tvb, packet_info *pinfo, proto_tree *buddy_tree)
{
guchar buddyname[MAX_BUDDYNAME_LENGTH+1];
guint8 *buddyname;
int offset = 0;
int buddyname_length = aim_get_buddyname( buddyname, tvb, offset, offset + 1 );
int buddyname_length = aim_get_buddyname( &buddyname, tvb, offset );
col_set_str(pinfo->cinfo, COL_INFO, "Oncoming Buddy");
col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
@ -99,9 +99,9 @@ static int dissect_aim_buddylist_oncoming(tvbuff_t *tvb, packet_info *pinfo, pro
static int dissect_aim_buddylist_offgoing(tvbuff_t *tvb, packet_info *pinfo, proto_tree *buddy_tree)
{
guchar buddyname[MAX_BUDDYNAME_LENGTH+1];
guint8 *buddyname;
int offset = 0;
int buddyname_length = aim_get_buddyname( buddyname, tvb, offset, offset + 1 );
int buddyname_length = aim_get_buddyname( &buddyname, tvb, offset );
col_set_str(pinfo->cinfo, COL_INFO, "Offgoing Buddy");
col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",

View File

@ -81,13 +81,12 @@ static int dissect_aim_chat_userinfo_list(tvbuff_t *tvb, packet_info *pinfo, pro
static int dissect_aim_chat_outgoing_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *chat_tree _U_)
{
guchar *buddyname;
guint8 *buddyname;
guchar *msg;
int buddyname_length;
buddyname=(guchar *)wmem_alloc(wmem_packet_scope(), MAX_BUDDYNAME_LENGTH+1);
msg=(guchar *)wmem_alloc(wmem_packet_scope(), 1000);
buddyname_length = aim_get_buddyname( buddyname, tvb, 30, 31 );
buddyname_length = aim_get_buddyname( &buddyname, tvb, 30 );
/* channel message from client */
aim_get_message( msg, tvb, 40 + buddyname_length, tvb_length(tvb)
@ -101,14 +100,13 @@ static int dissect_aim_chat_outgoing_msg(tvbuff_t *tvb, packet_info *pinfo, prot
static int dissect_aim_chat_incoming_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *chat_tree)
{
guchar *buddyname;
guint8 *buddyname;
guchar *msg;
/* channel message to client */
int buddyname_length;
buddyname=(guchar *)wmem_alloc(wmem_packet_scope(), MAX_BUDDYNAME_LENGTH+1);
msg=(guchar *)wmem_alloc(wmem_packet_scope(), 1000);
buddyname_length = aim_get_buddyname( buddyname, tvb, 30, 31 );
buddyname_length = aim_get_buddyname( &buddyname, tvb, 30 );
aim_get_message( msg, tvb, 36 + buddyname_length, tvb_length(tvb)
- 36 - buddyname_length );

View File

@ -320,7 +320,7 @@ dissect_aim_msg_outgoing(tvbuff_t *tvb, packet_info *pinfo, proto_tree *msg_tree
int offset = 0;
const aim_tlv *aim_ch_tlvs = NULL;
guint16 channel_id;
guchar buddyname[MAX_BUDDYNAME_LENGTH+1];
guint8 *buddyname;
int buddyname_length;
/* ICBM Cookie */
@ -334,8 +334,7 @@ dissect_aim_msg_outgoing(tvbuff_t *tvb, packet_info *pinfo, proto_tree *msg_tree
offset += 2;
/* Add the outgoing username to the info column */
buddyname_length = aim_get_buddyname(buddyname, tvb, offset,
offset + 1);
buddyname_length = aim_get_buddyname(&buddyname, tvb, offset);
col_append_fstr(pinfo->cinfo, COL_INFO, " to: %s",
format_text(buddyname, buddyname_length));

View File

@ -73,7 +73,7 @@ static int dissect_aim_snac_signon_signon(tvbuff_t *tvb, packet_info *pinfo,
{
guint8 buddyname_length = 0;
int offset = 0;
guchar buddyname[MAX_BUDDYNAME_LENGTH + 1];
guint8 *buddyname;
/* Info Type */
proto_tree_add_item(tree, hf_aim_infotype, tvb, offset, 2, ENC_BIG_ENDIAN);
@ -83,7 +83,7 @@ static int dissect_aim_snac_signon_signon(tvbuff_t *tvb, packet_info *pinfo,
offset += 1;
/* Buddy Name */
buddyname_length = aim_get_buddyname( buddyname, tvb, offset, offset + 1 );
buddyname_length = aim_get_buddyname( &buddyname, tvb, offset );
col_append_fstr(pinfo->cinfo, COL_INFO, " Username: %s",
format_text(buddyname, buddyname_length));

View File

@ -493,16 +493,13 @@ const aim_family
}
int
aim_get_buddyname( guchar *name, tvbuff_t *tvb, int len_offset, int name_offset)
aim_get_buddyname( guint8 **name, tvbuff_t *tvb, int offset)
{
guint8 buddyname_length;
buddyname_length = tvb_get_guint8(tvb, len_offset);
buddyname_length = tvb_get_guint8(tvb, offset);
if(buddyname_length > MAX_BUDDYNAME_LENGTH )
buddyname_length = MAX_BUDDYNAME_LENGTH;
tvb_get_nstringz0(tvb, name_offset, buddyname_length + 1, name);
*name = tvb_get_string_enc(wmem_packet_scope(), tvb, offset + 1, buddyname_length, ENC_UTF_8|ENC_NA);
return buddyname_length;
}

View File

@ -26,8 +26,6 @@
/* For e_uuid_t */
#include "packet-dcerpc.h"
#define MAX_BUDDYNAME_LENGTH 30
typedef struct _aim_tlv {
guint16 valueid;
const char *desc;
@ -53,7 +51,7 @@ void aim_init_family(int proto, int ett, guint16 family, const aim_subtype *subt
int dissect_aim_buddyname(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree);
void aim_get_message( guchar *msg, tvbuff_t *tvb, int msg_offset, int msg_length);
int aim_get_buddyname( guchar *name, tvbuff_t *tvb, int len_offset, int name_offset);
int aim_get_buddyname( guint8 **name, tvbuff_t *tvb, int offset);
int dissect_aim_userinfo(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree);
int dissect_aim_snac_error(tvbuff_t *tvb, packet_info *pinfo, proto_tree *aim_tree);