diff options
Diffstat (limited to 'indra/lscript/lscript_execute')
-rw-r--r-- | indra/lscript/lscript_execute/lscript_execute.cpp | 14 | ||||
-rw-r--r-- | indra/lscript/lscript_execute/lscript_readlso.cpp | 14 |
2 files changed, 22 insertions, 6 deletions
diff --git a/indra/lscript/lscript_execute/lscript_execute.cpp b/indra/lscript/lscript_execute/lscript_execute.cpp index 196ca07d1d..b166e922a2 100644 --- a/indra/lscript/lscript_execute/lscript_execute.cpp +++ b/indra/lscript/lscript_execute/lscript_execute.cpp @@ -43,11 +43,19 @@ LLScriptExecute::LLScriptExecute(FILE *fp) U8 sizearray[4]; S32 filesize; S32 pos = 0; - fread(&sizearray, 1, 4, fp); - filesize = bytestream2integer(sizearray, pos); + if (fread(&sizearray, 1, 4, fp) != 4) + { + llwarns << "Short read" << llendl; + filesize = 0; + } else { + filesize = bytestream2integer(sizearray, pos); + } mBuffer = new U8[filesize]; fseek(fp, 0, SEEK_SET); - fread(mBuffer, 1, filesize, fp); + if (fread(mBuffer, 1, filesize, fp) != filesize) + { + llwarns << "Short read" << llendl; + } fclose(fp); init(); diff --git a/indra/lscript/lscript_execute/lscript_readlso.cpp b/indra/lscript/lscript_execute/lscript_readlso.cpp index 669a9b6a06..0021a87d65 100644 --- a/indra/lscript/lscript_execute/lscript_readlso.cpp +++ b/indra/lscript/lscript_execute/lscript_readlso.cpp @@ -17,11 +17,19 @@ LLScriptLSOParse::LLScriptLSOParse(FILE *fp) U8 sizearray[4]; S32 filesize; S32 pos = 0; - fread(&sizearray, 1, 4, fp); - filesize = bytestream2integer(sizearray, pos); + if (fread(&sizearray, 1, 4, fp) != 4) + { + llwarns << "Short read" << llendl; + filesize = 0; + } else { + filesize = bytestream2integer(sizearray, pos); + } mRawData = new U8[filesize]; fseek(fp, 0, SEEK_SET); - fread(mRawData, 1, filesize, fp); + if (fread(mRawData, 1, filesize, fp) != filesize) + { + llwarns << "Short read" << llendl; + } initOpCodePrinting(); } |