diff options
author | jackpoz <giacomopoz@gmail.com> | 2014-05-25 14:42:22 +0200 |
---|---|---|
committer | jackpoz <giacomopoz@gmail.com> | 2014-05-25 15:18:55 +0200 |
commit | 5e66253de230ef3f9236ba71e94296d60b05aa3f (patch) | |
tree | 4a4f9d46203da5647f7eb60a38999a39a74c8932 /src/server/shared/Packets/ByteBuffer.h | |
parent | 01b33a67726d04a2862fd079c02fb432e2b9ec9b (diff) |
Core/Misc: Throw an exception if client sends invalid float/double data
Throw a ByteBufferException if client sends 1.#INF0000, 1.#QNAN000, 1.#IND0000 or other invalid float/double values.
Handle this invalid values in StaticMapTree::isInLineOfSight() to avoid triggering an assert.
Fixes #12126
Diffstat (limited to 'src/server/shared/Packets/ByteBuffer.h')
-rw-r--r-- | src/server/shared/Packets/ByteBuffer.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/server/shared/Packets/ByteBuffer.h b/src/server/shared/Packets/ByteBuffer.h index dd0a9d5fdf4..e06556423aa 100644 --- a/src/server/shared/Packets/ByteBuffer.h +++ b/src/server/shared/Packets/ByteBuffer.h @@ -241,12 +241,16 @@ class ByteBuffer ByteBuffer &operator>>(float &value) { value = read<float>(); + if (!isfinite(value)) + throw ByteBufferException(); return *this; } ByteBuffer &operator>>(double &value) { value = read<double>(); + if (!isfinite(value)) + throw ByteBufferException(); return *this; } |