aboutsummaryrefslogtreecommitdiffstats
path: root/sisinstall/sismain.cpp
diff options
context:
space:
mode:
authorDaniel Brahneborg <basic@chello.se>2002-03-03 22:02:40 +0000
committerDaniel Brahneborg <basic@chello.se>2002-03-03 22:02:40 +0000
commita4dcb0ecf632832258ebb523c6bc39b7b94f8775 (patch)
tree18cf38bb6ecd95671401414c2ba8381b6c90132f /sisinstall/sismain.cpp
parentd92c2abcca7d9270f49cbfb09a27bfda86642c31 (diff)
downloadplptools-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.cpp17
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();