[Bug] Pfile corruption if IMC channels are denied, or if ignores are set
< Newer Topic
:: Older Topic >
AFKMud 2.03
Pages:<< prev 1 next >>
#1 Feb 4, 2008 8:42 am
Black Hand
GroupAdministrators
Posts3,697
JoinedJan 1, 2002
Bug: Pfile corruption if IMC channels are denied, or if ignores are set
Danger: Critical - Data corruption of player files when IMC connections are utilized
Discovered in: AFKMud 2.03
Found by: Samson
Fixed by: Samson
---
imc.cpp, imc_loadchar
Locate:
Chage to:
Locate:
Change to:
While this will have no affect on pfiles where IMC is not being used, it will cause data corruption in the player's inventory if they have set an ignore on someone or if they have been denied use of any of the network channels. The reason for this is because the data is saved with just a newline as the line terminator, but the loading function is expecting a tilde as a terminator. So the entire ignore list will get loaded as a single string, which does not terminate until the first tilde is encountered in the player's inventory data. This will of course cause that first item to be corrupted, and if left unchecked, will eventually corrupt their entire inventory.
Danger: Critical - Data corruption of player files when IMC connections are utilized
Discovered in: AFKMud 2.03
Found by: Samson
Fixed by: Samson
---
imc.cpp, imc_loadchar
Locate:
fread_string( IMC_DENY( ch ), fp );
Chage to:
fread_line( IMC_DENY( ch ), fp );
Locate:
if( !strcasecmp( word, "IMCignore" ) ) { string newign; fread_string( newign, fp ); CH_IMCDATA( ch )->imc_ignore.push_back( newign ); break; }
Change to:
if( !strcasecmp( word, "IMCignore" ) ) { string newign; fread_line( newign, fp ); CH_IMCDATA( ch )->imc_ignore.push_back( newign ); break; }
While this will have no affect on pfiles where IMC is not being used, it will cause data corruption in the player's inventory if they have set an ignore on someone or if they have been denied use of any of the network channels. The reason for this is because the data is saved with just a newline as the line terminator, but the loading function is expecting a tilde as a terminator. So the entire ignore list will get loaded as a single string, which does not terminate until the first tilde is encountered in the player's inventory data. This will of course cause that first item to be corrupted, and if left unchecked, will eventually corrupt their entire inventory.
Pages:<< prev 1 next >>