diff options
Diffstat (limited to 'lib/sislangrecord.cpp')
-rw-r--r-- | lib/sislangrecord.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/sislangrecord.cpp b/lib/sislangrecord.cpp index 5540e6e..2b6afc4 100644 --- a/lib/sislangrecord.cpp +++ b/lib/sislangrecord.cpp @@ -24,15 +24,20 @@ #include <stdio.h> -void -SISLangRecord::fillFrom(uchar* buf, int* base) +SisRC +SISLangRecord::fillFrom(uchar* buf, int* base, off_t len) { + if (*base + 2 > len) + return SIS_TRUNCATED; m_lang = read16(buf + *base); + if (m_lang > 33) // Thai, last language + return SIS_CORRUPTED; if (logLevel >= 2) printf("Got language %d (%s)\n", m_lang, langTable[m_lang].m_name); if (logLevel >= 1) printf("%d .. %d (%d bytes): Language record for %s\n", *base, *base + 2, 2, langTable[m_lang].m_name); *base += 2; + return SIS_OK; } |