The real danger from this is not the crash, which I dont have and cannot
replicate.  all ''" etc does is gets zapped out by the filters used (sacred
codebase has this fix in there if stock).  The real issue is that if you
save these characters to your pfile you WILL lose the rest of the pfile.
People will login without any equipment.  Its rather nasty bug in stock rom.

To find out how to fix it, and other stock bugs, there is a nice buglisting
I maintain and have maintained for 5 years on:
www.mageslair.net  look in the coders corner for buglisting.txt

Also, all those and more were fixed in the sacred codebase so take a look at
it.

Chris "Winston" Litchfield
----- Original Message -----
From: "Carlos Moreno" <[EMAIL PROTECTED]>
To: "'Jason Gauthier'" <[EMAIL PROTECTED]>
Cc: <[email protected]>
Sent: Saturday, March 22, 2003 8:53 AM
Subject: RE: ROM 'Crashing'...


In inputs like "cast 'lightning breath' mob", one_argument must return
"lightning breath" as a single argument. To do this, it takes the cEnd
character (" or ') as a 'start of argument' and try to search the end of

the parameter with another occurrence of cEnd (or end of input).

This ' in the case of "Alias ' ' a" prevents the first for instruction
to eliminate the space between the 's and sets cEnd to '.

In the next block ( while ( *argument != '\0' ).... ) copies the space
to arg_first and in the next iteration found the cEnd, copy the '\0' at
the end  and returns that single space. ' ' is a blank input, but the
"arg[0] != '\0'" check fails, because arg[0] is the space and arg[1] is
the '\0'.

What the fix does is delete all leading spaces again. If cEnd is not
found, it does nothing. If is found, it will remove leading spaces in
that argument. Without leading spaces, blank inputs are blank inputs.

In addition, inputs like "cast '   lightning breath' mob" works fine.

-----Mensaje original-----
De: Jason Gauthier [mailto:[EMAIL PROTECTED]
Enviado el: sábado, 22 de marzo de 2003 14:28
Para: 'Carlos Moreno'
Asunto: RE: ROM 'Crashing'...

Yup, you're right!

Good eye, I totally missed that and made the change quite some time ago.

I'm not sure what your fix is down below. Can you elaborate?


> > One way to correct this is to add in the one_argument
> > function the next
> > lines:
> >
> >     if ( *argument == '\'' || *argument == '"' )
> >         cEnd = *argument++;
> >
> > +   while ( isspace(*argument) )
> > +       argument++;
> >
> >     while ( *argument != '\0' )
> >     {
> >
> > PS: Sorry if that was already posted.



--
ROM mailing list
[email protected]
http://www.rom.org/cgi-bin/mailman/listinfo/rom



Reply via email to