2013-07-10 77 views
0

我目前正试图通过注入DLL和迂回几个功能添加一些功能到一个基本的服务器应用程序,我有一个存储的IP地址一个问题让损坏的-2级之间的呼叫。C++注入DLL乏越来越损坏

首先我绕道“接受”,并解析一些值,然后将其输入到一个连接类,并将其添加到列表中。

接受弯路功能:

std::list<Connection*> ConnectionsList; 
SOCKET WINAPI MyAccept(SOCKET s, sockaddr *addr, int *addrlen) 
{ 
    ... 
    ConnectionsList.push_back(new Connection(ClientSocket, ipstr)); 
    ... 
} 

连接类:

SOCKET s; 
char * ipAddress; 
char * playerName; 
Connection::Connection(SOCKET sock, char * address) 
{ 
    s = sock; 
    ipAddress = address; 
} 

start

我也绕道 '关闭套接字' 我想从去除插座在这一点连接列表。如果我在此功能断点,IP地址似乎已损坏。

end

有谁知道为什么发生这种情况?

+0

s是否已经从296变成了292? – doctorlove

回答

0

ipAddress = address;将刚才复制的指针。如果别的东西改变了它指向的东西,你将会陷入麻烦。

由于这是C++中它可能是最安全的使用std::string

std::string ipAdreess; 
... 
ipAddress = address; 

否则,stdcpy到足够大的缓冲区。

BTW,什么删除所有从列表中Connection*

0

尽力保护您的ConnectionList等静态/全局变量用锁。