X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=netconn.c;h=32e2f89a5c6aac24b026478b5a437a2b1da893f2;hb=e61e64e24dc955e55dee4b26ffa4ea1e6fbe7701;hp=d72dffed91e56f39b1d2521f7009acde343c7b31;hpb=cda9024baad015d0d145f22ad67980113847901f;p=xonotic%2Fdarkplaces.git diff --git a/netconn.c b/netconn.c index d72dffed..32e2f89a 100755 --- a/netconn.c +++ b/netconn.c @@ -695,10 +695,10 @@ int NetConn_ClientParsePacket(lhnetsocket_t *mysocket, qbyte *data, int length, string += 13; // hostcache only uses text addresses LHNETADDRESS_ToString(peeraddress, cname, sizeof(cname), true); - if ((s = SearchInfostring(string, "gamename" )) != NULL) strncpy(game, s, sizeof(game) - 1);else game[0] = 0; - if ((s = SearchInfostring(string, "modname" )) != NULL) strncpy(mod , s, sizeof(mod ) - 1);else mod[0] = 0; - if ((s = SearchInfostring(string, "mapname" )) != NULL) strncpy(map , s, sizeof(map ) - 1);else map[0] = 0; - if ((s = SearchInfostring(string, "hostname" )) != NULL) strncpy(name, s, sizeof(name) - 1);else name[0] = 0; + if ((s = SearchInfostring(string, "gamename" )) != NULL) strlcpy(game, s, sizeof (game));else game[0] = 0; + if ((s = SearchInfostring(string, "modname" )) != NULL) strlcpy(mod , s, sizeof (mod ));else mod[0] = 0; + if ((s = SearchInfostring(string, "mapname" )) != NULL) strlcpy(map , s, sizeof (map ));else map[0] = 0; + if ((s = SearchInfostring(string, "hostname" )) != NULL) strlcpy(name, s, sizeof (name));else name[0] = 0; if ((s = SearchInfostring(string, "protocol" )) != NULL) c = atoi(s);else c = -1; if ((s = SearchInfostring(string, "clients" )) != NULL) users = atoi(s);else users = 0; if ((s = SearchInfostring(string, "sv_maxclients")) != NULL) maxusers = atoi(s);else maxusers = 0; @@ -765,7 +765,7 @@ int NetConn_ClientParsePacket(lhnetsocket_t *mysocket, qbyte *data, int length, Con_Printf("received server list...\n"); while (length >= 7 && data[0] == '\\' && (data[1] != 0xFF || data[2] != 0xFF || data[3] != 0xFF || data[4] != 0xFF) && data[5] * 256 + data[6] != 0) { - sprintf(ipstring, "%u.%u.%u.%u:%u", data[1], data[2], data[3], data[4], (data[5] << 8) | data[6]); + snprintf (ipstring, sizeof (ipstring), "%u.%u.%u.%u:%u", data[1], data[2], data[3], data[4], (data[5] << 8) | data[6]); if (developer.integer) Con_Printf("Requesting info from server %s\n", ipstring); LHNETADDRESS_FromString(&svaddress, ipstring, 0); @@ -793,7 +793,7 @@ int NetConn_ClientParsePacket(lhnetsocket_t *mysocket, qbyte *data, int length, } memset(&hostcache[n], 0, sizeof(hostcache[n])); // store the data the engine cares about (address and ping) - strcpy(hostcache[n].cname, ipstring); + strlcpy (hostcache[n].cname, ipstring, sizeof (hostcache[n].cname)); hostcache[n].ping = 100000; hostcache[n].querytime = realtime; // build description strings for the things users care about @@ -869,7 +869,7 @@ int NetConn_ClientParsePacket(lhnetsocket_t *mysocket, qbyte *data, int length, if (developer.integer) Con_Printf("Datagram_ParseConnectionless: received CCREP_REJECT from %s.\n", addressstring2); Con_Printf("%s\n", data); - strncpy(m_return_reason, data, sizeof(m_return_reason) - 1); + strlcpy (m_return_reason, data, sizeof (m_return_reason)); break; #if 0 case CCREP_SERVER_INFO: @@ -891,20 +891,18 @@ int NetConn_ClientParsePacket(lhnetsocket_t *mysocket, qbyte *data, int length, { hostCacheCount++; memset(&hostcache[n], 0, sizeof(hostcache[n])); - strcpy(hostcache[n].name, MSG_ReadString()); - strcpy(hostcache[n].map, MSG_ReadString()); + strlcpy (hostcache[n].name, MSG_ReadString(), sizeof (hostcache[n].name)); + strlcpy (hostcache[n].map, MSG_ReadString(), sizeof (hostcache[n].map)); hostcache[n].users = MSG_ReadByte(); hostcache[n].maxusers = MSG_ReadByte(); c = MSG_ReadByte(); if (c != NET_PROTOCOL_VERSION) { - strncpy(hostcache[n].cname, hostcache[n].name, sizeof(hostcache[n].cname) - 1); - hostcache[n].cname[sizeof(hostcache[n].cname) - 1] = 0; + strlcpy (hostcache[n].cname, hostcache[n].name, sizeof (hostcache[n].cname)); strcpy(hostcache[n].name, "*"); - strncat(hostcache[n].name, hostcache[n].cname, sizeof(hostcache[n].name) - 1); - hostcache[n].name[sizeof(hostcache[n].name) - 1] = 0; + strlcat (hostcache[n].name, hostcache[n].cname, sizeof(hostcache[n].name)); } - strcpy(hostcache[n].cname, cname); + strlcpy (hostcache[n].cname, cname, sizeof (hostcache[n].cname)); } } break; @@ -944,7 +942,7 @@ void NetConn_ClientFrame(void) { cls.connect_trying = false; if (m_state == m_slist) - strcpy(m_return_reason, "Connect: Failed"); + strcpy (m_return_reason, "Connect: Failed"); else Con_Printf("Connect failed\n"); return; @@ -952,14 +950,14 @@ void NetConn_ClientFrame(void) if (cls.connect_nextsendtime) { if (m_state == m_slist) - strcpy(m_return_reason, "Connect: Still trying"); + strcpy (m_return_reason, "Connect: Still trying"); else Con_Printf("Still trying...\n"); } else { if (m_state == m_slist) - strcpy(m_return_reason, "Connect: Trying"); + strcpy (m_return_reason, "Connect: Trying"); else Con_Printf("Trying...\n"); } @@ -1258,7 +1256,7 @@ int NetConn_ServerParsePacket(lhnetsocket_t *mysocket, qbyte *data, int length, { // connect to the client // everything is allocated, just fill in the details - strcpy(conn->address, addressstring2); + strlcpy (conn->address, addressstring2, sizeof (conn->address)); if (developer.integer) Con_Printf("Datagram_ParseConnectionless: sending CCREP_ACCEPT to %s.\n", addressstring2); // send back the info about the server connection