[ICQ/AIM] Possibly fix for broken privacy lists in some accounts (tickets #9034, #12549)

dzlists at arcor.de dzlists at arcor.de
Mon Oct 18 17:51:51 EDT 2010


Hello,


I wrote:
> My somewhat naive guess is that a range of low bid numbers is reserved for general entries.
> The range limit is wrong because some entries are outside the range, e.g.
> gid=0x0000 bid=0x0007 list_type=0x0029 name='facebook'.

A very simple explanation, and of course wrong...

On my broken account #1, I deleted the buddy icon entry
| gid=0x0000	bid=0x0003      list_type=0x0014        name='1'
and put it at a different bid.

After that, it was possible to add one blocking entry at bid=0x0003, but
0x0005 still failed.
Apparently it's just single broken entries that cause the problem.

--- broken #1, adding an entry with bid=0x0003 works (as did adding 0x0006 and above) ----
(22:55:25) oscar: ssi: About to add a deny
[..]
(22:55:25) aim_ssi_add_to_private_list: adding 222222222 to list_type 0x000e for ssi.local 0x091e5e78
(22:55:25) dump: gid=0x0000	bid=0x0000	list_type=0x0001	name='(null)'
(22:55:25) dump: gid=0x0000	bid=0x0001	list_type=0x0004	name='(null)'
(22:55:25) dump: gid=0x0000	bid=0x0002	list_type=0x0005	name='(null)'
(22:55:25) dump: gid=0x0000	bid=0x0003	list_type=0x000e	name='222222222'  <<<
(22:55:25) dump: gid=0x0000	bid=0x0004	list_type=0x001d	name='(null)'
(22:55:25) dump: gid=0x0000	bid=0x0007	list_type=0x0029	name='facebook'
(22:55:25) dump: gid=0x0000	bid=0x0008	list_type=0x0019	name='444444444'
(22:55:25) dump: gid=0x0000	bid=0x0009	list_type=0x0019	name='333333333'
(22:55:25) dump: gid=0x0000	bid=0x0010	list_type=0x0020	name='ICQ-MDIR'
(22:55:25) dump: gid=0x0000	bid=0x0013	list_type=0x0028	name='(null)'
(22:55:25) dump: gid=0x0000	bid=0x1401	list_type=0x0014	name='1'
(22:55:25) dump: gid=0x0001	bid=0x0000	list_type=0x0001	name='Buddys'
(22:55:25) dump: gid=0x0001	bid=0x0001	list_type=0x0000	name='222222222'
(22:55:25) dump: gid=0x0001	bid=0x4433	list_type=0x0000	name='111111111'
(22:55:25) dump: gid=0x0002	bid=0x0000	list_type=0x0001	name='Buddies'
(22:55:25) oscar: ssi: status is 0x0000 for a 0x0008 action with name 222222222

--- broken #1, ...only bid=0x0005 is broken ----
(22:55:44) oscar: ssi: About to add a deny
[..]
(22:55:44) aim_ssi_add_to_private_list: adding 111111111 to list_type 0x000e for ssi.local 0x091e5e78
(22:55:44) dump: gid=0x0000	bid=0x0000	list_type=0x0001	name='(null)'
(22:55:44) dump: gid=0x0000	bid=0x0001	list_type=0x0004	name='(null)'
(22:55:44) dump: gid=0x0000	bid=0x0002	list_type=0x0005	name='(null)'
(22:55:44) dump: gid=0x0000	bid=0x0003	list_type=0x000e	name='222222222'
(22:55:44) dump: gid=0x0000	bid=0x0004	list_type=0x001d	name='(null)'
(22:55:44) dump: gid=0x0000	bid=0x0005	list_type=0x000e	name='111111111' <<<<
(22:55:44) dump: gid=0x0000	bid=0x0007	list_type=0x0029	name='facebook'
(22:55:44) dump: gid=0x0000	bid=0x0008	list_type=0x0019	name='444444444'
(22:55:44) dump: gid=0x0000	bid=0x0009	list_type=0x0019	name='333333333'
(22:55:44) dump: gid=0x0000	bid=0x0010	list_type=0x0020	name='ICQ-MDIR'
(22:55:44) dump: gid=0x0000	bid=0x0013	list_type=0x0028	name='(null)'
(22:55:44) dump: gid=0x0000	bid=0x1401	list_type=0x0014	name='1'
(22:55:44) dump: gid=0x0001	bid=0x0000	list_type=0x0001	name='Buddys'
(22:55:44) dump: gid=0x0001	bid=0x0001	list_type=0x0000	name='222222222'
(22:55:44) dump: gid=0x0001	bid=0x4433	list_type=0x0000	name='111111111'
(22:55:44) dump: gid=0x0002	bid=0x0000	list_type=0x0001	name='Buddies'
(22:55:45) oscar: ssi: status is 0x0003 for a 0x0008 action with name no item
(22:55:45) oscar: ssi: Action 0x0008 was unsuccessful with error 0x0003


I couldn't find any remnants of the broken bid in the itemlist nor in the tlvlist loaded by
parsedata() (family_feedbag.c).

Anyway, just deleting the broken entry from the server worked.
This was done by adding a fake item to the ssi.official itemlist, so a aim_ssi_sync() would send a
SNAC_SUBTYPE_FEEDBAG_DEL when it finds this item is missing in the ssi.local itemlist.

AFAICS, the fake entry just needs the right gid and bid, but name and list_type does not matter.
In this way, it was possible to repair the broken ICQ accounts, but this is of course the ugly way.

Can such a deletion also be done from a plug-in (e.g. by injecting data into the ssi.official or
ssi.pending list of an account)?
If so, I would like to write one (if this approach makes any sense at all).


Regards,

Dustin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: add_phantom_to_official_list.c
Type: text/x-csrc
Size: 1728 bytes
Desc: not available
URL: <http://pidgin.im/pipermail/devel/attachments/20101018/0b3f223b/attachment-0002.c>


More information about the Devel mailing list