]> git.pond.sub.org Git - empserver/commitdiff
Really fix accepting connections from "long" IPv6 address
authorMarkus Armbruster <armbru@pond.sub.org>
Tue, 8 Jan 2013 17:54:20 +0000 (18:54 +0100)
committerMarkus Armbruster <armbru@pond.sub.org>
Sat, 12 Jan 2013 16:56:39 +0000 (17:56 +0100)
Commit ee01ac19 (v4.3.23) enlarged player member hostaddr from 32 to
46 characters, but missed natstr member nat_hostaddr.  player_main()
copies hostaddr to nat_hostaddr.  Can overrun the destination, but
fortunately just into nat_hostname.

Impact:

* Can makes praddr() print only a suffix of the address.  Used by play
  command, for player messages during login and logout, and for
  logging.

* Can make player_main()'s test for "same address as last time" fail,
  causing extra "Last connection" messages.

* Matching against econfig key privip is not affected.

* Journal event login is not affected.

include/nat.h

index 74c7ed6659cf5fe8644495d6504d0d5098251cf9..fd01289e7304c0c22a7a99b57055ccdb7b39b26b 100644 (file)
@@ -93,7 +93,7 @@ struct natstr {
     enum nat_status nat_stat;
     char nat_cnam[20];         /* country name */
     char nat_pnam[20];         /* representative */
-    char nat_hostaddr[32];     /* host addr of last user */
+    char nat_hostaddr[46];     /* host addr of last user */
     char nat_hostname[512];    /* hostname of last user, may be empty */
     char nat_userid[32];       /* userid of last user, may be empty */
     coord nat_xcap, nat_ycap;  /* cap location in abs coords */