diff options
Diffstat (limited to 'src/base64.cpp')
-rw-r--r-- | src/base64.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/base64.cpp b/src/base64.cpp index c9a6b59..be5fe8d 100644 --- a/src/base64.cpp +++ b/src/base64.cpp | |||
@@ -1,5 +1,7 @@ | |||
1 | #include "bu/base64.h" | 1 | #include "bu/base64.h" |
2 | 2 | ||
3 | namespace Bu { subExceptionDef( Base64Exception ) } | ||
4 | |||
3 | const char Bu::Base64::tblEnc[65] = { | 5 | const char Bu::Base64::tblEnc[65] = { |
4 | "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" | 6 | "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" |
5 | }; | 7 | }; |
@@ -106,7 +108,15 @@ size_t Bu::Base64::read( void *pBuf, size_t nBytes ) | |||
106 | for( int j = 0; j < 4; j++ ) | 108 | for( int j = 0; j < 4; j++ ) |
107 | { | 109 | { |
108 | if( rNext.read( &buf[j], 1 ) == 0 ) | 110 | if( rNext.read( &buf[j], 1 ) == 0 ) |
111 | { | ||
112 | if( rNext.isEOS() ) | ||
113 | { | ||
114 | iChars = 0; | ||
115 | bEosIn = true; | ||
116 | throw Base64Exception("Premature end of stream detected while decoding Base64 data."); | ||
117 | } | ||
109 | return sIn; | 118 | return sIn; |
119 | } | ||
110 | if( buf[j] == ' ' || buf[j] == '\t' || | 120 | if( buf[j] == ' ' || buf[j] == '\t' || |
111 | buf[j] == '\n' || buf[j] == '\r' ) | 121 | buf[j] == '\n' || buf[j] == '\r' ) |
112 | { | 122 | { |