From: Pawel Andruszkiewicz
Date: Wed, 3 Jun 2015 13:11:39 +0000 (+0200)
Subject: [Archive] Double check if iterator is valid.
X-Git-Tag: submit/tizen_mobile/20150612.133019^2~2^2~52^2
X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d7abb42b6446c002016eebb5a5993658f1d35a11;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git
[Archive] Double check if iterator is valid.
Prevent CID: 388883
[Verification] TCT pass rate: 100%
Change-Id: I5af48b3473108d6802000c69395e04d95ca0dbdf
Signed-off-by: Pawel Andruszkiewicz
---
diff --git a/src/archive/archive_instance.cc b/src/archive/archive_instance.cc
index 47804261..d4ca1792 100755
--- a/src/archive/archive_instance.cc
+++ b/src/archive/archive_instance.cc
@@ -568,12 +568,20 @@ void ArchiveInstance::Extract(const picojson::value& args, picojson::object& out
//Not found but if our name does not contain '/'
//try looking for directory with such name
- if (it == entries->end() && !isDirectoryPath(v_entry_name.get())) {
+ if (entries->end() == it && !isDirectoryPath(v_entry_name.get())) {
const std::string try_directory = v_entry_name.get() + "/";
LoggerD("GetEntryByName Trying directory: [%s]", try_directory.c_str());
it = entries->find(try_directory);
}
+ if (entries->end() == it) {
+ LoggerE("Failed to find entry");
+ PostError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Failed to find entry"), callbackId);
+ delete callback;
+ callback = NULL;
+ return;
+ }
+
result = it->second->extractTo(callback);
if (result.error_code() != ErrorCode::NO_ERROR) {
LoggerE("ArchiveFileEntry.extractTo error");