From 6578aaea02de43c38c7648e3924ee4015f54b88a Mon Sep 17 00:00:00 2001 From: Gregor Jasny Date: Sun, 9 Apr 2017 23:59:23 -0700 Subject: [PATCH] Avoid undefined behaviour at circular shift Clang UBSAN complains about 64 bit wide shifts. --- websocketpp/frame.hpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/websocketpp/frame.hpp b/websocketpp/frame.hpp index 8a173375a..18a990b36 100644 --- a/websocketpp/frame.hpp +++ b/websocketpp/frame.hpp @@ -610,6 +610,9 @@ inline size_t prepare_masking_key(const masking_key_type& key) { * to zero and less than sizeof(size_t). */ inline size_t circshift_prepared_key(size_t prepared_key, size_t offset) { + if (offset == 0) { + return prepared_key; + } if (lib::net::is_little_endian()) { size_t temp = prepared_key << (sizeof(size_t)-offset)*8; return (prepared_key >> offset*8) | temp;