Skip to content

Commit

Permalink
ObfusString: Fix consteval failure for excessively large strings
Browse files Browse the repository at this point in the history
  • Loading branch information
Sainan committed Jan 20, 2025
1 parent f41fcda commit e1df30d
Showing 1 changed file with 19 additions and 13 deletions.
32 changes: 19 additions & 13 deletions soup/ObfusString.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,21 @@ NAMESPACE_SOUP
seed = rand.getConstexprSeed(Len);
LcgRng rng(seed);

// rot13
// copy input & apply rot13
for (size_t i = 0; i != Len; ++i)
{
m_data[i] = string::rot13(in[i]);
}

if (Len < 40'000)
{
// mirror
for (size_t i = 0, j = Len - 1; i != Len / 2; ++i, --j)
{
std::swap(m_data[i], m_data[j]);
}
}

// flip bits
for (size_t i = 0; i != Len; ++i)
{
Expand All @@ -59,12 +68,6 @@ NAMESPACE_SOUP
}
m_data[i] ^= rng.state >> (m * 8);
}

// mirror
for (size_t i = 0, j = Len - 1; i != Len / 2; ++i, --j)
{
std::swap(m_data[i], m_data[j]);
}
}

SOUP_NOINLINE void runtime_access() noexcept
Expand All @@ -76,12 +79,6 @@ NAMESPACE_SOUP
LcgRng rng(seed);
seed = 0;

// mirror
for (size_t i = 0, j = Len - 1; i != Len / 2; ++i, --j)
{
std::swap(m_data[i], m_data[j]);
}

// flip bits
for (size_t i = 0; i != Len; ++i)
{
Expand All @@ -93,6 +90,15 @@ NAMESPACE_SOUP
m_data[i] ^= rng.state >> (m * 8);
}

if constexpr (Len < 40'000)
{
// mirror
for (size_t i = 0, j = Len - 1; i != Len / 2; ++i, --j)
{
std::swap(m_data[i], m_data[j]);
}
}

// rot13
for (size_t i = 0; i != Len; ++i)
{
Expand Down

0 comments on commit e1df30d

Please sign in to comment.