mirror of
https://github.com/XRPLF/rippled.git
synced 2026-04-29 15:37:57 +00:00
masking_key casting fix to resolve aliasing warnings #references 72
This commit is contained in:
@@ -67,7 +67,7 @@ public:
|
||||
|
||||
if (!input.fail()) {
|
||||
if (m_masking_index >= 0) {
|
||||
c = c ^ m_masking_key[(m_masking_index++)%4];
|
||||
c = c ^ m_masking_key.c[(m_masking_index++)%4];
|
||||
}
|
||||
|
||||
m_payload.push_back(c);
|
||||
@@ -133,7 +133,8 @@ public:
|
||||
}
|
||||
|
||||
void set_masking_key(int32_t key) {
|
||||
*reinterpret_cast<int32_t*>(m_masking_key) = key;
|
||||
//*reinterpret_cast<int32_t*>(m_masking_key) = key;
|
||||
m_masking_key.i = key;
|
||||
m_masking_index = (key == 0 ? -1 : 0);
|
||||
}
|
||||
private:
|
||||
@@ -153,6 +154,11 @@ private:
|
||||
static const uint64_t PAYLOAD_SIZE_INIT = 128; // 128B
|
||||
static const uint64_t PAYLOAD_SIZE_MAX = 128; // 128B
|
||||
|
||||
union masking_key {
|
||||
int32_t i;
|
||||
char c[4];
|
||||
};
|
||||
|
||||
// Message state
|
||||
frame::opcode::value m_opcode;
|
||||
|
||||
@@ -160,7 +166,8 @@ private:
|
||||
utf8_validator::validator m_validator;
|
||||
|
||||
// Masking state
|
||||
unsigned char m_masking_key[4];
|
||||
masking_key m_masking_key;
|
||||
//unsigned char m_masking_key[4];
|
||||
int m_masking_index;
|
||||
|
||||
// Message payload
|
||||
|
||||
@@ -83,7 +83,7 @@ uint64_t data::process_payload(std::istream& input,uint64_t size) {
|
||||
|
||||
void data::process_character(unsigned char c) {
|
||||
if (m_masking_index >= 0) {
|
||||
c = c ^ m_masking_key[m_masking_index];
|
||||
c = c ^ m_masking_key.c[m_masking_index];
|
||||
m_masking_index = index_value((m_masking_index+1)%4);
|
||||
}
|
||||
|
||||
@@ -127,7 +127,8 @@ void data::validate_payload() {
|
||||
}
|
||||
|
||||
void data::set_masking_key(int32_t key) {
|
||||
*reinterpret_cast<int32_t*>(m_masking_key) = key;
|
||||
m_masking_key.i = key;
|
||||
//*reinterpret_cast<int32_t*>(m_masking_key) = key;
|
||||
m_masking_index = (key == 0 ? M_MASK_KEY_ZERO : M_BYTE_0);
|
||||
}
|
||||
|
||||
@@ -152,7 +153,7 @@ void data::append_payload(const std::string& payload) {
|
||||
void data::mask() {
|
||||
if (m_masking_index >= 0) {
|
||||
for (std::string::iterator it = m_payload.begin(); it != m_payload.end(); it++) {
|
||||
(*it) = *it ^ m_masking_key[m_masking_index];
|
||||
(*it) = *it ^ m_masking_key.c[m_masking_index];
|
||||
m_masking_index = index_value((m_masking_index+1)%4);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -202,6 +202,11 @@ private:
|
||||
M_BYTE_3 = 3
|
||||
};
|
||||
|
||||
union masking_key {
|
||||
int32_t i;
|
||||
char c[4];
|
||||
};
|
||||
|
||||
friend void intrusive_ptr_add_ref(const data * s) {
|
||||
++s->m_ref_count;
|
||||
}
|
||||
@@ -232,7 +237,8 @@ private:
|
||||
utf8_validator::validator m_validator;
|
||||
|
||||
// Masking state
|
||||
unsigned char m_masking_key[4];
|
||||
masking_key m_masking_key;
|
||||
//unsigned char m_masking_key[4];
|
||||
// m_masking_index can take on
|
||||
index_value m_masking_index;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user