Buffer overflow? Help...
#1

pawn Код:
public LoadCar()
{
    new arrCoords[27][64];
    new strFromFile2[256];
    new File: file = fopen("LARP/Vehicles/cars.cfg", io_read);
    if (file)
    {
        new idx = 184;
        while (idx < sizeof(CarInfo))
        {
            fread(file, strFromFile2);
            split(strFromFile2, arrCoords, ',');
            CarInfo[idx][cModel] = strval(arrCoords[0]);
            CarInfo[idx][cLocationx] = floatstr(arrCoords[1]);
            CarInfo[idx][cLocationy] = floatstr(arrCoords[2]);
            CarInfo[idx][cLocationz] = floatstr(arrCoords[3]);
            CarInfo[idx][cAngle] = floatstr(arrCoords[4]);
            CarInfo[idx][cColorOne] = strval(arrCoords[5]);
            CarInfo[idx][cColorTwo] = strval(arrCoords[6]);
            strmid(CarInfo[idx][cOwner], arrCoords[7], 0, strlen(arrCoords[7]), 255);
            CarInfo[idx][cOwned] = strval(arrCoords[8]);
            CarInfo[idx][cLock] = strval(arrCoords[9]);
            CarInfo[idx][cPaintjob] = strval(arrCoords[10]);
            CarInfo[idx][cVirWorld] = strval(arrCoords[11]);
            CarInfo[idx][cComponent0] = strval(arrCoords[12]);
            CarInfo[idx][cComponent1] = strval(arrCoords[13]);
            CarInfo[idx][cComponent2] = strval(arrCoords[14]);
            CarInfo[idx][cComponent3] = strval(arrCoords[15]);
            CarInfo[idx][cComponent4] = strval(arrCoords[16]);
            CarInfo[idx][cComponent5] = strval(arrCoords[17]);
            CarInfo[idx][cComponent6] = strval(arrCoords[18]);
            CarInfo[idx][cComponent7] = strval(arrCoords[19]);
            CarInfo[idx][cComponent8] = strval(arrCoords[20]);
            CarInfo[idx][cComponent9] = strval(arrCoords[21]);
            CarInfo[idx][cComponent10] = strval(arrCoords[22]);
            CarInfo[idx][cComponent11] = strval(arrCoords[23]);
            CarInfo[idx][cComponent12] = strval(arrCoords[24]);
            CarInfo[idx][cComponent12] = strval(arrCoords[25]);
            CarInfo[idx][cComponent13] = strval(arrCoords[26]);
            idx++;
        }
        printf("[SCRIPT]: Loaded %d Cars", idx);
    }
    return 1;
}
So this is how I basically load the cars in my server. The problem is when alot of players buy cars, at some moment, everything with the cars is not working. You cannot buy, Your car ID changes, and then everything else... Does anybody know how to fix that and increase the buffer?
Reply
#2

Are you sure that the order of the enum matches with the order of your car loading ? I don't see other any possible cause...
Reply
#3

cars.cfg -> http://pastebin.com/Y8E7VLEz
Reply
#4

I mean your script not the cars saved in a file
Reply
#5

The part of code you gave us is a LOAD part witch is called at server start to read from file and store to variables.
That is not the part of code that is bugged.I guess its a buy car command or create or something like that
Reply
#6

Yeah, but when this happen, ive got a backup of cars.cfg and when I load it, everything is fine. So im thinking that this must be probably wrong way to load cars.cfg. Im not sure ;(
Reply
#7

The file have 686 lines

Try:
Put 700 on sizeof CarInfo

- [H]ead
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)