diff options
author | Daniel Brahneborg <basic@chello.se> | 2002-03-03 22:02:40 +0000 |
---|---|---|
committer | Daniel Brahneborg <basic@chello.se> | 2002-03-03 22:02:40 +0000 |
commit | a4dcb0ecf632832258ebb523c6bc39b7b94f8775 (patch) | |
tree | 18cf38bb6ecd95671401414c2ba8381b6c90132f /sisinstall/sismain.cpp | |
parent | d92c2abcca7d9270f49cbfb09a27bfda86642c31 (diff) | |
download | plptools-a4dcb0ecf632832258ebb523c6bc39b7b94f8775.tar.gz plptools-a4dcb0ecf632832258ebb523c6bc39b7b94f8775.tar.bz2 plptools-a4dcb0ecf632832258ebb523c6bc39b7b94f8775.zip |
Add buffer overflow checks to handle truncated and corrupted sis files.
Diffstat (limited to 'sisinstall/sismain.cpp')
-rw-r--r-- | sisinstall/sismain.cpp | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/sisinstall/sismain.cpp b/sisinstall/sismain.cpp index 8516b0f..5a5b640 100644 --- a/sisinstall/sismain.cpp +++ b/sisinstall/sismain.cpp @@ -67,12 +67,19 @@ void main(int argc, char* argv[]) } createCRCTable(); SISFile sisFile; - sisFile.fillFrom(buf); - if (!dryrun) + SisRC rc = sisFile.fillFrom(buf, len); + if (rc == SIS_OK) { - SISInstaller installer; - installer.setPsion(psion); - installer.run(&sisFile, buf); + if (!dryrun) + { + SISInstaller installer; + installer.setPsion(psion); + installer.run(&sisFile, buf, len); + } + } + else + { + printf("Could not parse the sis file.\n"); } psion->disconnect(); |