fix(base64): encode: incorrect padding if size % 3 == 2
This commit is contained in:
2
Doxyfile
2
Doxyfile
@ -48,7 +48,7 @@ PROJECT_NAME = libbasen
|
||||
# could be handy for archiving the generated documentation or if some version
|
||||
# control system is used.
|
||||
|
||||
PROJECT_NUMBER = v1.0.2
|
||||
PROJECT_NUMBER = v1.0.3
|
||||
|
||||
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
||||
# for a project that appears at the top of each page and should give viewer a
|
||||
|
||||
6
Makefile
6
Makefile
@ -59,8 +59,6 @@ DIRS =\
|
||||
${OBJDIR}\
|
||||
${OBJDIR}/hash\
|
||||
${LIBDIR}\
|
||||
doc\
|
||||
cov
|
||||
|
||||
build: library tools
|
||||
|
||||
@ -91,10 +89,10 @@ ${OBJDIR}/%${-g}-cov.o: ${SRCDIR}/%.cpp ${INCDIR}/${LIB}/%.hpp
|
||||
${CC} -o $@ -c $< -I${INCDIR} ${-l} ${CFLAGS} --coverage
|
||||
|
||||
${BINDIR}/%${-g}-cov: ${TESTDIR}/%.cpp ${patsubst %, ${OBJDIR}/%${-g}-cov.o, ${OBJS}}
|
||||
${CC} -o $@ $^ -I${INCDIR} ${-l} -lgtest ${CFLAGS} --coverage
|
||||
${CC} -o $@ $^ -I${INCDIR} ${-l} -lgtest -lgcov ${CFLAGS}
|
||||
|
||||
clean:
|
||||
rm -rf ${DIRS}
|
||||
rm -rf ${DIRS} doc cov
|
||||
|
||||
ifneq (${OBJS},)
|
||||
|
||||
|
||||
@ -85,7 +85,7 @@ namespace base64
|
||||
case 2:
|
||||
str[last_idx] = digits[data[data_size - 2] >> 2];
|
||||
str[last_idx + 1] = digits[(data[data_size - 2] << 4 | data[data_size - 1] >> 4) & 0x3F];
|
||||
str[last_idx + 2] = digits[data[data_size - 1] & 0x0F];
|
||||
str[last_idx + 2] = digits[data[data_size - 1] << 2 & 0x3F];
|
||||
str[last_idx + 3] = '=';
|
||||
break;
|
||||
default:
|
||||
|
||||
@ -21,8 +21,8 @@ TEST(base64, isValid)
|
||||
std::vector<std::pair<std::string, std::string>> tests = {
|
||||
{"", ""},
|
||||
{"BKUEpQ==", "04a504a5"},
|
||||
{"BKUEpQA=", "04a504a500"},
|
||||
{"BKUEpQAA", "04a504a50000"},
|
||||
{"aGVsbG8=", "68656c6c6f"},
|
||||
{"aGVsbG9v", "68656c6c6f6f"},
|
||||
};
|
||||
TEST(base64, encode)
|
||||
{
|
||||
@ -49,7 +49,7 @@ TEST(base64, decode)
|
||||
EXPECT_THROW(decode("FFF", 3, data.data(), data.size()), std::logic_error);
|
||||
EXPECT_THROW(decode("!@#!", 4, data.data(), data.size()), std::logic_error);
|
||||
EXPECT_THROW(decode("FF==", 2, data.data(), 0), std::length_error);
|
||||
EXPECT_NO_THROW(decode("" , 0, data.data(), 0));
|
||||
EXPECT_NO_THROW(decode("", 0, data.data(), 0));
|
||||
}
|
||||
TEST(base64, decode_1e7)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user