diff options
Diffstat (limited to 'protocols/oscar/search.c')
| -rw-r--r-- | protocols/oscar/search.c | 30 | 
1 files changed, 18 insertions, 12 deletions
diff --git a/protocols/oscar/search.c b/protocols/oscar/search.c index 4e0d3858..30d392ae 100644 --- a/protocols/oscar/search.c +++ b/protocols/oscar/search.c @@ -21,12 +21,14 @@ static int error(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_mo  		return 0;  	} -	if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype))) +	if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype))) {  		ret = userfunc(sess, rx, snac2->data /* address */); +	}  	/* XXX freesnac()? */ -	if (snac2) +	if (snac2) {  		g_free(snac2->data); +	}  	g_free(snac2);  	return ret; @@ -41,30 +43,33 @@ static int reply(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_mo  	aim_snac_t *snac2;  	char *searchaddr = NULL; -	if ((snac2 = aim_remsnac(sess, snac->id))) -		searchaddr = (char *)snac2->data; +	if ((snac2 = aim_remsnac(sess, snac->id))) { +		searchaddr = (char *) snac2->data; +	}  	tlvlist = aim_readtlvchain(bs);  	m = aim_counttlvchain(&tlvlist);  	/* XXX uhm. */ -	while ((cur = aim_gettlv_str(tlvlist, 0x0001, j+1)) && j < m) { -		buf = g_realloc(buf, (j+1) * (MAXSNLEN+1)); +	while ((cur = aim_gettlv_str(tlvlist, 0x0001, j + 1)) && j < m) { +		buf = g_realloc(buf, (j + 1) * (MAXSNLEN + 1)); -		strncpy(&buf[j * (MAXSNLEN+1)], cur, MAXSNLEN); +		strncpy(&buf[j * (MAXSNLEN + 1)], cur, MAXSNLEN);  		g_free(cur); -		j++;  +		j++;  	}  	aim_freetlvchain(&tlvlist); -	if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype))) +	if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype))) {  		ret = userfunc(sess, rx, searchaddr, j, buf); +	}  	/* XXX freesnac()? */ -	if (snac2) +	if (snac2) {  		g_free(snac2->data); +	}  	g_free(snac2);  	g_free(buf); @@ -75,10 +80,11 @@ static int reply(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_mo  static int snachandler(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs)  { -	if (snac->subtype == 0x0001) +	if (snac->subtype == 0x0001) {  		return error(sess, mod, rx, snac, bs); -	else if (snac->subtype == 0x0003) +	} else if (snac->subtype == 0x0003) {  		return reply(sess, mod, rx, snac, bs); +	}  	return 0;  }  | 
