I was trying to update my script so it could decipher the "flag" value that is returned from /stats o ... so I can easily identify what oper flags someone has set. I've noticed that each time I do /stats o, the flag value changes:
attempt 1:
:koala.vc.au.dal.net 243 xpxptest O * * xPsycho 32440305 opers
attempt 2:
:koala.vc.au.dal.net 243 xpxptest O * * xPsycho 32440305 opers
attempt 3:
:koala.vc.au.dal.net 243 xpxptest O * * xPsycho 197600935921 opers
attempt 4:
:koala.vc.au.dal.net 243 xpxptest O * * xPsycho 32440305 opers
attempt 5:
:koala.vc.au.dal.net 243 xpxptest O * * xPsycho 236255641585 opers
In later attempts, I also saw values of 140733225828337
and 139771153154033
returned.
The correct value should be 32440305 = 1111011101111111111110001 as those are the 25 oper flag bits we use. In some of the other results, I am seeing 54 bits and 66 bits being set ...
197600935921 = 10111000000001111011101111111111110001
236255641585 = 11011100000001111011101111111111110001
140733225828337 = 11111111111111100000001111011101111111111110001
139771153154033 = 11111110001111100000001111011101111111111110001
They all contain the same 25 bits at the end, but there are extra bits being prepended somehow.
This is happening for me both locally and remotely and with both oper'd and non-oper'd clients. At first I thought it might have been a client issue, so I continued by testing using a raw telnet connection directly to the server.
I've reproduced this on multiple servers including koala, tranquility, and underworld ... but can't seem to reproduce it on diamond or my local test machine.