Fix null characters in shortened identifiers (#4946).

This commit is contained in:
Wilson Snyder
2024-03-07 18:09:55 -05:00
parent acb63c929b
commit 8ba494c71f
5 changed files with 71 additions and 3 deletions
+7 -2
View File
@@ -563,8 +563,13 @@ string VName::hashedName() {
VHashSha256 hash{m_name};
const string suffix = "__Vhsh" + hash.digestSymbol();
if (s_minLength < s_maxLength) {
s_dehashMap[suffix] = m_name.substr(s_minLength);
m_hashed = m_name.substr(0, s_minLength) + suffix;
// Keep a prefix from the original name
// Backup over digits so adding __Vhash doesn't look like a encoded hex digit
// ("__0__Vhsh")
size_t prefLength = s_minLength;
while (prefLength >= 1 && m_name[prefLength - 1] != '_') --prefLength;
s_dehashMap[suffix] = m_name.substr(prefLength);
m_hashed = m_name.substr(0, prefLength) + suffix;
} else {
s_dehashMap[suffix] = m_name;
m_hashed = suffix;