--- a/src/protocols/oscar/info.c Fri Aug 03 18:30:46 2001 +0000 +++ b/src/protocols/oscar/info.c Sat Aug 04 01:37:49 2001 +0000 @@ -539,20 +539,30 @@ return 0; } +/* + * Normally contains: + * t(0001) - short containing max profile length (value = 1024) + * t(0002) - short - unknown (value = 16) [max MIME type length?] + * t(0003) - short - unknown (value = 7) + */ static int rights(struct aim_session_t *sess, aim_module_t *mod, struct command_rx_struct *rx, aim_modsnac_t *snac, unsigned char *data, int datalen) { - struct aim_tlvlist_t *tlvlist; - aim_rxcallback_t userfunc; - int ret = 0; + struct aim_tlvlist_t *tlvlist; + aim_rxcallback_t userfunc; + int ret = 0; + unsigned short maxsiglen = 0; - tlvlist = aim_readtlvchain(data, datalen); + tlvlist = aim_readtlvchain(data, datalen); - if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype))) - ret = userfunc(sess, rx); + if (aim_gettlv(tlvlist, 0x0001, 1)) + maxsiglen = aim_gettlv16(tlvlist, 0x0001, 1); - aim_freetlvchain(&tlvlist); + if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype))) + ret = userfunc(sess, rx, maxsiglen); - return ret; + aim_freetlvchain(&tlvlist); + + return ret; } static int userinfo(struct aim_session_t *sess, aim_module_t *mod, struct command_rx_struct *rx, aim_modsnac_t *snac, unsigned char *data, int datalen)