Skip to content

Commit d09b35e

Browse files
committed
/vsitar/ (fuzzing special format): avoid issue with blank names
Fixes https://issues.oss-fuzz.com/issues/441859587
1 parent 0674d19 commit d09b35e

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

port/cpl_vsil_tar.cpp

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -292,10 +292,20 @@ int VSITarReader::GotoNextFile()
292292
}
293293
if (m_abyBufferIdx < m_abyBufferSize)
294294
{
295-
osNextFileName.assign(
295+
const char *pszFilename =
296296
reinterpret_cast<const char *>(m_abyBuffer +
297-
nFilenameStartIdx),
298-
m_abyBufferIdx - nFilenameStartIdx);
297+
nFilenameStartIdx);
298+
osNextFileName.assign(
299+
pszFilename,
300+
CPLStrnlen(pszFilename,
301+
m_abyBufferIdx - nFilenameStartIdx));
302+
if (osNextFileName.empty() || osNextFileName == "." ||
303+
osNextFileName.find("..") != std::string::npos)
304+
{
305+
CPLError(CE_Failure, CPLE_AppDefined,
306+
"Invalid filename");
307+
return false;
308+
}
299309
nCurOffset = VSIFTellL(fp);
300310
nCurOffset -= m_abyBufferSize;
301311
nCurOffset += m_abyBufferIdx + 1;

0 commit comments

Comments
 (0)