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");