diff options
Diffstat (limited to 'linden/indra/llmessage/llxorcipher.cpp')
-rw-r--r-- | linden/indra/llmessage/llxorcipher.cpp | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/linden/indra/llmessage/llxorcipher.cpp b/linden/indra/llmessage/llxorcipher.cpp index 7a72866..3c3f690 100644 --- a/linden/indra/llmessage/llxorcipher.cpp +++ b/linden/indra/llmessage/llxorcipher.cpp | |||
@@ -27,7 +27,8 @@ | |||
27 | 27 | ||
28 | #include "linden_common.h" | 28 | #include "linden_common.h" |
29 | 29 | ||
30 | #include "llcrypto.h" | 30 | #include "llxorcipher.h" |
31 | |||
31 | #include "llerror.h" | 32 | #include "llerror.h" |
32 | 33 | ||
33 | ///---------------------------------------------------------------------------- | 34 | ///---------------------------------------------------------------------------- |
@@ -63,25 +64,26 @@ LLXORCipher& LLXORCipher::operator=(const LLXORCipher& cipher) | |||
63 | return *this; | 64 | return *this; |
64 | } | 65 | } |
65 | 66 | ||
66 | BOOL LLXORCipher::encrypt(const U8* src, U32 src_len, U8* dst, U32 dst_len) | 67 | U32 LLXORCipher::encrypt(const U8* src, U32 src_len, U8* dst, U32 dst_len) |
67 | { | 68 | { |
68 | if(!src || !src_len || !dst || !dst_len || !mPad) return FALSE; | 69 | if(!src || !src_len || !dst || !dst_len || !mPad) return 0; |
69 | U8* pad_end = mPad + mPadLen; | 70 | U8* pad_end = mPad + mPadLen; |
70 | while(src_len--) | 71 | U32 count = src_len; |
72 | while(count--) | ||
71 | { | 73 | { |
72 | *dst++ = *src++ ^ *mHead++; | 74 | *dst++ = *src++ ^ *mHead++; |
73 | if(mHead >= pad_end) mHead = mPad; | 75 | if(mHead >= pad_end) mHead = mPad; |
74 | } | 76 | } |
75 | return TRUE; | 77 | return src_len; |
76 | } | 78 | } |
77 | 79 | ||
78 | BOOL LLXORCipher::decrypt(const U8* src, U32 src_len, U8* dst, U32 dst_len) | 80 | U32 LLXORCipher::decrypt(const U8* src, U32 src_len, U8* dst, U32 dst_len) |
79 | { | 81 | { |
80 | // xor is a symetric cipher, thus, just call the other function. | 82 | // xor is a symetric cipher, thus, just call the other function. |
81 | return encrypt(src, src_len, dst, dst_len); | 83 | return encrypt(src, src_len, dst, dst_len); |
82 | } | 84 | } |
83 | 85 | ||
84 | U32 LLXORCipher::requiredEncryptionSpace(U32 len) | 86 | U32 LLXORCipher::requiredEncryptionSpace(U32 len) const |
85 | { | 87 | { |
86 | return len; | 88 | return len; |
87 | } | 89 | } |