JK2 & JK3 Forcestring server crash Fix
Re: JK2 & JK3 Forcestring server crash Fix
is there any possible way u can remove the example on how to crash it pisses me off soooooo badly, like just edit ur readme and stuff so people have a clue what it is but don't know how to do it, please? u may have fixed it for JA 1.01 and JK2 1.03/1.04 but u have just completely ruined JA 1.0 and JK2 1.02 when u posted that, in jk2 1.02 u can delete forcechanged cmd for a work-around, but theres a way to still crash with it... in JA 1.0 if u try to delete the cmd it'll still crash no matter what happens! it's like the ja 1.0 model crash, theres no work around like the galak crash in jk2 1.02, JA 1.0 is way more vulnerable to crash
Re: JK2 & JK3 Forcestring server crash Fix
No. This has already been discussed.
What happens to outdated versions of the game, which should have ceased to exist years ago, is a moot point from a security standpoint. Besides, those versions have a whole lot of other, as efficient, better known crashes to worry about...
On a side note, I'll just say that in my personal opinion, the fragmentation of the communities between the different versions has caused and is causing much more damage to the games than the bugs and crashes alone ever will. Raven's asinine patching policy did not help either. They should have tuned the master-servers to reject out-of-date servers a week or so after each patch came out. That way everybody would have (willy-nilly) updated right then, all crashes would have been fixed much more easily, and the communities would be much stronger now instead of staying divided.
Moreover, there never was any technical reason not to update. The worst thing that could happen if a crash such as this one becomes extremely widespread is that people will at last be forced to update en masse to the current, moddable versions of both games.
And this would actually strengthen the gaming communities.
What happens to outdated versions of the game, which should have ceased to exist years ago, is a moot point from a security standpoint. Besides, those versions have a whole lot of other, as efficient, better known crashes to worry about...
On a side note, I'll just say that in my personal opinion, the fragmentation of the communities between the different versions has caused and is causing much more damage to the games than the bugs and crashes alone ever will. Raven's asinine patching policy did not help either. They should have tuned the master-servers to reject out-of-date servers a week or so after each patch came out. That way everybody would have (willy-nilly) updated right then, all crashes would have been fixed much more easily, and the communities would be much stronger now instead of staying divided.
Moreover, there never was any technical reason not to update. The worst thing that could happen if a crash such as this one becomes extremely widespread is that people will at last be forced to update en masse to the current, moddable versions of both games.
And this would actually strengthen the gaming communities.
{<§ Gamall Wednesday Ida §>}
{ Mods and Programs - Mods TES-IV Oblivion }
{ Mods and Programs - Mods TES-IV Oblivion }
Re: JK2 & JK3 Forcestring server crash Fix
k here is where u could be right about JA but not jk2.. the difference between jk2 1.02 and jk2 1.04 is so massive that people would rather quit the game than update to 1.04 and i know that for a fact. once a crash gets "widespread" people try to fix it, if fixes the crashers are like "oh my god what do we do now!" and they go search for other crashes and bring in more and more crashes. like in jk2 1.02.... so anyway u could be right about ja, but not jk2.Gamall wrote:Moreover, there never was any technical reason not to update. The worst thing that could happen if a crash such as this one becomes extremely widespread is that people will at last be forced to update en masse to the current, moddable versions of both games.
And this would actually strengthen the gaming communities.
Re: JK2 & JK3 Forcestring server crash Fix
Really ? I read the history of the patches and didn't see anything absolutely dramatic.evan1715 wrote:the difference between jk2 1.02 and jk2 1.04 is so massive that people would rather quit the game than update to 1.04 and i know that for a fact.
I assume you are talking about gameplay differences ? Even assuming there really is a notable difference between the versions, this is not a dealbreaker since those changes can be unmade in a mod for 1.04 in order to get 1.02 gameplay without the crashes.
Now that would be a constructive way of "saving the JK2 1.02 community", instead of wasting time trying to get half-backed hex hacks fixing things which are trivially fixed in a mod or were fixed by official patches long ago.
Except many bugs simply can't be fixed in 1.02, which was your very own point to start with. So people wanting to crash a 1.02 server really do not need to know more than one unfixable bug: for instance the /say aaaaa crash, which has no binary fix I'm aware of for Linux servers as of yet. (and most dedicated servers are hosted on Linux). Or the model thingy. Or or or.evan1715 wrote:once a crash gets "widespread" people try to fix it, if fixes the crashers are like "oh my god what do we do now!" and they go search for other crashes and bring in more and more crashes. like in jk2 1.02
{<§ Gamall Wednesday Ida §>}
{ Mods and Programs - Mods TES-IV Oblivion }
{ Mods and Programs - Mods TES-IV Oblivion }
Re: JK2 & JK3 Forcestring server crash Fix
"I read the history of the patches and didn't see anything absolutely dramatic. "
are u kidding? everything changes in 1.04, play 1.02 then play 1.04, u may not be able to read it but u will see it
ok every idea u may have ive already thought it out... and the problem with that 1 is how am i going to get 500 people to update to 1.04 and only use my mod?
don't even have to go to 1.04, just go to 1.03... no1 will do it unless everyone does it, which ive tried and no1 wants to. do u want to try and change people's minds urself? and no most servers on jk2 1.02 are windows. mainly hosted by Art of War or NoGhost or a europe server located in germany but i forgot their website and they are also windows servers
are u kidding? everything changes in 1.04, play 1.02 then play 1.04, u may not be able to read it but u will see it
ok every idea u may have ive already thought it out... and the problem with that 1 is how am i going to get 500 people to update to 1.04 and only use my mod?
don't even have to go to 1.04, just go to 1.03... no1 will do it unless everyone does it, which ive tried and no1 wants to. do u want to try and change people's minds urself? and no most servers on jk2 1.02 are windows. mainly hosted by Art of War or NoGhost or a europe server located in germany but i forgot their website and they are also windows servers
Re: JK2 & JK3 Forcestring server crash Fix
in bg_misc.c theres a thing called "BG_LegalizedForcePowers" search for that and i think they try and attempt to prevent the force crash there is there a shorter way to fix it there?
Re: JK2 & JK3 Forcestring server crash Fix
Nope, what they do is check whether the player can "afford" the powers. They make some vague attempts to prevent bogus strings to get in, but it's not efficient. It's not the right place to do it either.
{<§ Gamall Wednesday Ida §>}
{ Mods and Programs - Mods TES-IV Oblivion }
{ Mods and Programs - Mods TES-IV Oblivion }
Re: JK2 & JK3 Forcestring server crash Fix
OOOH ok i guess i misunderstood what it was
Re: JK2 & JK3 Forcestring server crash Fix
did u ever test g_maxforcerank 200 in JA?
i did recently and the server crashes :S i guess that 'bug' only works for JK2, but geez do i love having unlimited force powers
also, u can still put the fix in bg_misc.c\BG_LegalizedForcePowers right?
i did recently and the server crashes :S i guess that 'bug' only works for JK2, but geez do i love having unlimited force powers
also, u can still put the fix in bg_misc.c\BG_LegalizedForcePowers right?
Re: JK2 & JK3 Forcestring server crash Fix
No, I did not.evan1715 wrote:did u ever test g_maxforcerank 200 in JA?
We discussed that already (look two posts up). You can put the fix wherever the hell you want --- so long as it works, but I see no point in it, unless there is a flow of execution where this is executed before WP_InitForcePowers, and there doesn't seem to be.evan1715 wrote:also, u can still put the fix in bg_misc.c\BG_LegalizedForcePowers right?
{<§ Gamall Wednesday Ida §>}
{ Mods and Programs - Mods TES-IV Oblivion }
{ Mods and Programs - Mods TES-IV Oblivion }
Re: JK2 & JK3 Forcestring server crash Fix
no we did not discuss if it would work in bg_legalizeforcepowers, i asked if it was ravensoft attempt to fix it, and u corrected me saying it was so clients could afford their forcepowers
im asking because ensiform put it his there when everyone else didn't o_o, lucas forums - ja coding he said it works but i was just asking from another person's point of view which one would be better
im asking because ensiform put it his there when everyone else didn't o_o, lucas forums - ja coding he said it works but i was just asking from another person's point of view which one would be better
Re: JK2 & JK3 Forcestring server crash Fix
I chose to do it in WP_InitForcePower, and it worked well. But it see no reason why it wouldn't work just as well in BG_LegalizedForcePowers.
In both cases, you need only one check to solve the problem. Where you choose to do that check is mainly a matter of personal taste IMHO
What I don't get is why you are still messing with that problem: it seems at first glance that you have no less than three different fixes to choose from: mine, hex's and ensiform's. I know mine works, I assume the other two work as well.
Just pick the first one which works for you (or the one which pleases your aesthetic fibre most) and move on to something more interesting, no ?
In both cases, you need only one check to solve the problem. Where you choose to do that check is mainly a matter of personal taste IMHO
What I don't get is why you are still messing with that problem: it seems at first glance that you have no less than three different fixes to choose from: mine, hex's and ensiform's. I know mine works, I assume the other two work as well.
Just pick the first one which works for you (or the one which pleases your aesthetic fibre most) and move on to something more interesting, no ?
{<§ Gamall Wednesday Ida §>}
{ Mods and Programs - Mods TES-IV Oblivion }
{ Mods and Programs - Mods TES-IV Oblivion }
Re: JK2 & JK3 Forcestring server crash Fix
i'm not interested in it, out of all 3 urs is the best because it supports g_maxforcerank "200" and hex's doesn't,
newage(clan mod creator) wants me to switch the anti force crash because he thinks it's the anti force crash thats causing his server to have random crashes, but i don't think it is but i'm like "whatever it's your mod" so he wants me to use master hex's, i really don't think it is because on my server(s) they're fine
well, and i think he wants me to use hex's because u have the license on urs :S
what u saw earlier when i showed u this: http://www.lucasforums.com/showpost.php ... tcount=107 a while ago, he uses on his JA version and not JO... thats all
also some off topic stuff: good news for you & me (kind of)
1. my birthday was sunday (im sure it wouldnt matter to u anyway because 2 different continents but i like to let people know )
2. i've learned some more stuff about C over the time
newage(clan mod creator) wants me to switch the anti force crash because he thinks it's the anti force crash thats causing his server to have random crashes, but i don't think it is but i'm like "whatever it's your mod" so he wants me to use master hex's, i really don't think it is because on my server(s) they're fine
well, and i think he wants me to use hex's because u have the license on urs :S
what u saw earlier when i showed u this: http://www.lucasforums.com/showpost.php ... tcount=107 a while ago, he uses on his JA version and not JO... thats all
also some off topic stuff: good news for you & me (kind of)
1. my birthday was sunday (im sure it wouldnt matter to u anyway because 2 different continents but i like to let people know )
2. i've learned some more stuff about C over the time
Re: JK2 & JK3 Forcestring server crash Fix
I am quite sure the "standard" (mak force rank 7) fix is correct.evan1715 wrote:newage(clan mod creator) wants me to switch the anti force crash because he thinks it's the anti force crash thats causing his server to have random crashes
edit: Neverming what follows: problem is solved in next post
But I have just made some more tests and asserted that the maxforcerank 200 fix is not totally correct. (I don't think this might cause "random" crashes though...) Haaa, if C had built-in support for regular expressions... *dreams on*
Here is a simple testing program for both fixes:
Code: Select all
#include <stdio.h>
#include <string.h>
/*
* Gamall Wednesday Ida
* Workaround Force crash
* License GPL.
*/
// if the force string is incorrect, this one will be used
char *SgaGENERIC_FORCE = "7 BOGUS";
// masks: no values outside these boundaries will be accepted
char *SgaFORCE_LOWER = "0-1-000000000000000000";
char *SgaFORCE_UPPER = "7-2-333333333333333333";
char* SgaCheckForceString(char* s) {
char *p = s, *pu = SgaFORCE_UPPER, *pl = SgaFORCE_LOWER;
if (!s || strlen(s) != 22) return SgaGENERIC_FORCE;
while(*p) {if (*p > *pu++ || *p++ < *pl++) {return SgaGENERIC_FORCE;}}
return s;
}
/*
* Gamall Wednesday Ida
* Workaround Force crash
* License GPL.
*
* Version modified to allow 'tweaked" settings
* like "g_maxforcerank 200".
*/
char *gaGENERIC_FORCE = "200 BOGUS";
char *gaFORCE_LOWER = "-1-000000000000000000";
char *gaFORCE_UPPER = "-2-333333333333333333";
char* gaCheckForceStringTail(char* s, char* S) {
char *p = s, *pu = gaFORCE_UPPER, *pl = gaFORCE_LOWER;
if (!s || strlen(s) != 21) return gaGENERIC_FORCE;
while(*p) {if (*p > *pu++ || *p++ < *pl++) {return gaGENERIC_FORCE;}}
return S;
}
char* gaCheckForceString(char* S) {
int i, l; char *p = S;
if (!S || (l = strlen(S)) > 24 || l < 22 || *S < '\0' || *S > '9') return gaGENERIC_FORCE;
for(i = 1 ; i <= 3 ; i++) {
if (S[i] == '-') return gaCheckForceStringTail(S+i, S);
if (S[i] < '\0' || S[i] > '9') break;
} return gaGENERIC_FORCE;
}
// GWI: End Force Crash workaround.
// Testing the workaround
int main()
{
int i;
char * tests[] =
{
"7-1-033330000000000333",
"I am so obviously bogus",
"-1-033330100000020333",
"1-033330010002000333",
"-033330000200000333",
"033330020000100333",
"a-1-033330000000000333",
"8-1-033330000000000333",
"0-1-033330000000000333",
"7-0-033330000000000333",
"7-4-033330000000000333",
"5-c-033330000000000333",
"1-2-033330000000000333",
"1-2-03333000000000333",
"1-2-033330040000000333",
"4-2-012030201010202010",
"4-2-111111111122223310",
"----------------------",
"200-2-111111111122223310",
"445-2-111111111122223310",
"199-2-111111111122223310",
"-4-2-111111111122223310",
"-14-2-111111111122223310",
"-94-2-111111111122223310",
"-994-2-111111111122223310",
""
};
printf("\n\nMAX FORCE RANK FIXES TESTS\n\n");
i = -1;
while(*tests[++i])
{
printf("(%2d) %25s ---> %25s ---> %25s\n", i, tests[i],
gaCheckForceString(tests[i]), SgaCheckForceString(tests[i]));
}
};
Code: Select all
MAX FORCE RANK FIXES TESTS
( 0) 7-1-033330000000000333 ---> 7-1-033330000000000333 ---> 7-1-033330000000000333
( 1) I am so obviously bogus ---> 200 BOGUS ---> 7 BOGUS
( 2) -1-033330100000020333 ---> 200 BOGUS ---> 7 BOGUS
( 3) 1-033330010002000333 ---> 200 BOGUS ---> 7 BOGUS
( 4) -033330000200000333 ---> 200 BOGUS ---> 7 BOGUS
( 5) 033330020000100333 ---> 200 BOGUS ---> 7 BOGUS
( 6) a-1-033330000000000333 ---> 200 BOGUS ---> 7 BOGUS
( 7) 8-1-033330000000000333 ---> 8-1-033330000000000333 ---> 7 BOGUS
( 8) 0-1-033330000000000333 ---> 0-1-033330000000000333 ---> 0-1-033330000000000333
( 9) 7-0-033330000000000333 ---> 200 BOGUS ---> 7 BOGUS
(10) 7-4-033330000000000333 ---> 200 BOGUS ---> 7 BOGUS
(11) 5-c-033330000000000333 ---> 200 BOGUS ---> 7 BOGUS
(12) 1-2-033330000000000333 ---> 1-2-033330000000000333 ---> 1-2-033330000000000333
(13) 1-2-03333000000000333 ---> 200 BOGUS ---> 7 BOGUS
(14) 1-2-033330040000000333 ---> 200 BOGUS ---> 7 BOGUS
(15) 4-2-012030201010202010 ---> 4-2-012030201010202010 ---> 4-2-012030201010202010
(16) 4-2-111111111122223310 ---> 4-2-111111111122223310 ---> 4-2-111111111122223310
(17) ---------------------- ---> 200 BOGUS ---> 7 BOGUS
(18) 200-2-111111111122223310 ---> 200-2-111111111122223310 ---> 7 BOGUS
(19) 445-2-111111111122223310 ---> 445-2-111111111122223310 ---> 7 BOGUS
(20) 199-2-111111111122223310 ---> 199-2-111111111122223310 ---> 7 BOGUS
(21) -4-2-111111111122223310 ---> -4-2-111111111122223310 ---> 7 BOGUS
(22) -14-2-111111111122223310 ---> -14-2-111111111122223310 ---> 7 BOGUS
(23) -94-2-111111111122223310 ---> -94-2-111111111122223310 ---> 7 BOGUS
(24) -994-2-111111111122223310 ---> 200 BOGUS ---> 7 BOGUS
I should have tested the 200 fix more before releasing the code. Mea culpa
I'll fix that when I get time... don't know when that will be. (well, right now it's not as much a matter of "free time" as a matter of "free mind", to be honest )
My own birthday does not matter to me so... But happy birthday anywayevan1715 wrote:1. my birthday was sunday (im sure it wouldnt matter to u anyway because 2 different continents but i like to let people know )
*grumbles something about books...*evan1715 wrote:2. i've learned some more stuff about C over the time
{<§ Gamall Wednesday Ida §>}
{ Mods and Programs - Mods TES-IV Oblivion }
{ Mods and Programs - Mods TES-IV Oblivion }
Re: JK2 & JK3 Forcestring server crash Fix
I was thinking about something else when I read that code again... then I banged my head on the walls
In line
remove the backslash in '\0'... which does not make sense
it becomes
And this time it seems to work properly.
You must just love what you can do with a simple typo
edit: And the same typo is also in line
I have edited the post where I give the code.
Here is the test code:
In line
Code: Select all
if (!S || (l = strlen(S)) > 24 || l < 22 || *S < '\0' || *S > '9') return gaGENERIC_FORCE;
it becomes
Code: Select all
if (!S || (l = strlen(S)) > 24 || l < 22 || *S < '0' || *S > '9') return gaGENERIC_FORCE;
You must just love what you can do with a simple typo
edit: And the same typo is also in line
Code: Select all
if (S[i] < '0' || S[i] > '9') break;
Here is the test code:
{<§ Gamall Wednesday Ida §>}
{ Mods and Programs - Mods TES-IV Oblivion }
{ Mods and Programs - Mods TES-IV Oblivion }
Who is online
Users browsing this forum: No registered users and 236 guests