Avatar billede bjering Nybegynder
15. juni 2004 - 07:24 Der er 6 kommentarer og
1 løsning

bitte problem med min buffer, kan i se fejlen ?

først lige lidt kode da (microsoft visual c++ 6.0) :

bool CHookDlg::HookClient (char *location, char *ip)
{
    PROCESS_INFORMATION pi;
    STARTUPINFO si = {0};

    char* space = " ";
    char* setting = " -noupdate";
    char* buf = new char[strlen(location)+strlen(space)+strlen(ip)+strlen(setting)];
    char* buf_ptr= buf; // done so we can mover buf_ptr to were we need to memcpy
    memcpy(buf_ptr, location, strlen(location));
    buf_ptr+=strlen(location);
    memcpy(buf_ptr, space, strlen(space));
    buf_ptr+=strlen(space);
    memcpy(buf_ptr, ip, strlen(ip));
    buf_ptr+=strlen(ip);
    memcpy(buf_ptr, setting, strlen(setting));

    Log2File(TRUE, "Attempting to run and hook %s\n", buf);
   
    /* Ok, load the client into suspended mode */
    if (!CreateProcess("Game Windows Client", buf, 0, 0, 0, CREATE_SUSPENDED | CREATE_NEW_PROCESS_GROUP, 0, 0, &si, &pi))
        HookError("CreateProcess()", (HANDLE)NULL);
    delete buf;

    return true;
}

okay her er hvad min buffer siger den har:

[07:22:38] Attempting to run and hook c:\games\mitspil\hej.exe 80.164.0.0 -noupdateýýýý

skulle være

[07:22:38] Attempting to run and hook c:\games\mitspil\hej.exe 80.164.0.0 -noupdate

nogle gange ser bufferen helt anderledes ud, og jeg kan ikke liiige se hvor det er galt henne.

en quick fix måske ?

tror selv det er den måde jeg regner bufferens størelse ud, men kan ikke lige sætte fingeren på det.

ved godt det er lidt kluntet kode :)
Avatar billede arne_v Ekspert
15. juni 2004 - 07:26 #1
Der mangler en terminerende nul byte !
Avatar billede arne_v Ekspert
15. juni 2004 - 07:28 #2
char* space = " ";
    char* setting = " -noupdate";
    char* buf = new char[strlen(location)+strlen(space)+strlen(ip)+strlen(setting)+1]; // <---- +1
    char* buf_ptr= buf; // done so we can mover buf_ptr to were we need to memcpy
    strcpy(buf_ptr, location); // <--- strcpy fremfor memcpy
    strcat(buf_ptr, space); // <--- strcat fremfor memcpy
    strcat(buf_ptr, ip); // <--- strcat fremfor memcpy
    strcat(buf_ptr, setting); // <--- strcat fremfor memcpy
Avatar billede arne_v Ekspert
15. juni 2004 - 07:30 #3
Måske endda:

char* buf = new char[strlen(location)+strlen(space)+strlen(ip)+strlen(setting)+1];
sprintf(buf,"%s %s -noupdate",location,ip);
Avatar billede bjering Nybegynder
15. juni 2004 - 07:31 #4
det var jo lige det der manglede :D

hvorfor smider folk aldrig et svar så man kan få det hurtig overstået, eller kan de bare godt lide at se folk ligne idioter lol :)

naw, pointsne er self dine, smider du ikke lige et svar :)
Avatar billede bjering Nybegynder
15. juni 2004 - 07:32 #5
nah det virkede så det er okay's, men nice nok du lavede lidt ekstra linier, ved aldrig om man får brug for det.
Avatar billede arne_v Ekspert
15. juni 2004 - 07:33 #6
svar
Avatar billede bjering Nybegynder
15. juni 2004 - 07:34 #7
:) takker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester