Login
User Name:

Password:



Register
Forgot your password?
Vote for Us!
parse description bug
Dec 15, 2017, 10:08 pm
By Remcon
Couple bugs
Dec 12, 2017, 5:42 pm
By Remcon
Bug in disarm( )
Nov 12, 2017, 6:54 pm
By GatewaySysop
Bug in will_fall( )
Oct 23, 2017, 1:35 am
By GatewaySysop
Bug in do_zap( ), do_brandish( )
Oct 18, 2017, 1:52 pm
By GatewaySysop
LOP 1.45
Author: Remcon
Submitted by: Remcon
LOP Heroes Edition
Author: Vladaar
Submitted by: Vladaar
Heroes sound extras
Author: Vladaar
Submitted by: Vladaar
6Dragons 4.3
Author: Vladaar
Submitted by: Vladaar
Memwatch
Author: Johan Lindh
Submitted by: Vladaar
Users Online
CommonCrawl, DotBot, Bing, Yahoo!

Members: 0
Guests: 7
Stats
Files
Topics
Posts
Members
Newest Member
477
3,706
19,240
608
LAntorcha
Today's Birthdays
There are no member birthdays today.
Related Links
» SmaugMuds.org » Bugfix Lists » SWR FUSS Bugfix List » [Bug] Pfiles can cause infini...
Forum Rules | Mark all | Recent Posts

[Bug] Pfiles can cause infinite loops if corrupted
< Newer Topic :: Older Topic >

Pages:<< prev 1 next >>
Post is unread #1 Mar 4, 2006, 6:41 pm
Go to the top of the page
Go to the bottom of the page

Samson
Black Hand
GroupAdministrators
Posts3,639
JoinedJan 1, 2002

Bug: Pfiles can cause infinite loops if corrupted
Danger: High - One corrupt pfile will ruin your day. The resulting bug messages can quickly fill your quota.
Found by: Remcon
Fixed by: Samson

---

db.c, fread_word

Locate:
      if( feof( fp ) )
      {
         bug( "fread_word: EOF encountered on read.\r\n" );
         if( fBootDb )
            exit( 1 );
         *pword = '\0';
         return word;
      }


Change to:
      if( feof( fp ) )
      {
         bug( "fread_word: EOF encountered on read.\r\n" );
         if( fBootDb )
            exit( 1 );
         word[0] = '\0';
         return word;
      }


save.c, fread_char

Locate:
      word = feof( fp ) ? "End" : fread_word( fp );
      fMatch = FALSE;


Change to:
      word = ( feof( fp ) ? "End" : fread_word( fp ) );

      if( word[0] == '\0' )
      {
         bug( "%s: EOF encountered reading file!", __FUNCTION__ );
         word = "End";
      }
      fMatch = FALSE;


Repeat the same thing in fread_obj.

A corrupted pfile can become one of the worst nightmares in administering a mud. When such a pfile begins to load but is only partially complete, the code normally would continue to cycle at the EOF marker and get stuck there. The resulting bug messages are murder on the logs and other resources. In a limited quota environment, this will fill up your space in mere seconds. In a non-limited environment, the potential exists for this to fill up the entire drive in a matter of minutes.

The code fixes above can also be used on other things which expect to load files after bootup, mainly in snippets that add new things to the system which are not part of the main codebase.
       
Pages:<< prev 1 next >>