On Thu, 20 Apr 2017, Cy Schubert wrote:
Please trim quotes.
In message <201704201919.v3kjjyko052...@repo.freebsd.org>, Michael Tuexen
write
s:
[>> ... 5 lines trimmed]
Log:
Syncoockies can be used in combination with the syncache. If the cache
overflows, syncookies are used.
[>> ... 16 lines trimmed]
Modified: head/sys/netinet/tcp_syncache.c
=============================================================================
=
--- head/sys/netinet/tcp_syncache.c Thu Apr 20 19:14:52 2017 (r31720
7)
+++ head/sys/netinet/tcp_syncache.c Thu Apr 20 19:19:33 2017 (r31720
8)
@@ -260,6 +260,7 @@ syncache_init(void)
&V_tcp_syncache.hashbase[i].sch_mtx, 0);
V_tcp_syncache.hashbase[i].sch_length = 0;
V_tcp_syncache.hashbase[i].sch_sc = &V_tcp_syncache;
+ V_tcp_syncache.hashbase[i].sch_last_overflow = INT64_MIN;
...
This line produced the following on i386:
/opt/src/svn-current/sys/netinet/tcp_syncache.c:263:50: error: implicit
conversion from 'long long' to 'time_t' (aka 'int') changes value from
-9223372036854775808 to 0 [-Werror,-Wconstant-conversion]
V_tcp_syncache.hashbase[i].sch_last_overflow = INT64_MIN;
~ ^~~~~~~~~
./x86/_stdint.h:91:41: note: expanded from macro 'INT64_MIN'
#define INT64_MIN (-0x7fffffffffffffffLL-1)
~~~~~~~~~~~~~~~~~~~~~^~
Looks like it needs a time_t cast.
A cast would just break the warning. INT64_MIN has nothing to do with
time_t. The expression (time_t)INT64_MIN would be more obviously garbage
since in the above it is not clear that sch_last_overflow has a type
unrelated to the constant.
INT64_MIN is also broken if time_t is 64 bits but unsigned. Then it is
converted to half of plus infinity instead of the intended minus infinity.
Bruce
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"