提交 91a338ae 编写于 作者: S Simon Fels 提交者: GitHub

Merge pull request #311 from morphis/f/check-for-valid-launch-intent

Ensure that we have an valid intent before we launch it
......@@ -21,6 +21,12 @@
namespace anbox {
namespace android {
bool Intent::valid() const {
// At the moment we only support component+package for intents
// (see android/service/android_api_skeleton.cpp for more details)
return !(component.empty() && package.empty());
}
std::ostream &operator<<(std::ostream &out, const Intent &intent) {
out << "[";
if (!intent.action.empty())
......
......@@ -31,6 +31,8 @@ struct Intent {
std::string package;
std::string component;
std::vector<std::string> categories;
bool valid() const;
};
std::ostream &operator<<(std::ostream &out, const Intent &intent);
......
......@@ -79,6 +79,11 @@ anbox::cmds::Launch::Launch()
stack_));
action([this](const cli::Command::Context&) {
if (!intent_.valid()) {
ERROR("The intent you provided is invalid. Please provide a correct launch intent.");
return EXIT_FAILURE;
}
auto trap = core::posix::trap_signals_for_process({core::posix::Signal::sig_term, core::posix::Signal::sig_int});
trap->signal_raised().connect([trap](const core::posix::Signal& signal) {
INFO("Signal %i received. Good night.", static_cast<int>(signal));
......
add_subdirectory(android)
add_subdirectory(support)
add_subdirectory(common)
add_subdirectory(graphics)
ANBOX_ADD_TEST(intent_tests intent_tests.cpp)
/*
* Copyright (C) 2017 Simon Fels <morphis@gravedo.de>
*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 3, as published
* by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranties of
* MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#include "anbox/android/intent.h"
#include <gtest/gtest.h>
TEST(Intent, IsValid) {
anbox::android::Intent intent;
ASSERT_FALSE(intent.valid());
intent.component = "foo";
ASSERT_TRUE(intent.valid());
intent.package = "bla";
ASSERT_TRUE(intent.valid());
intent.component = "";
ASSERT_TRUE(intent.valid());
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册