Merge lp:~jamesh/mediascanner2/bug-1489489 into lp:mediascanner2

Proposed by James Henstridge
Status: Merged
Approved by: Michi Henning
Approved revision: 331
Merged at revision: 335
Proposed branch: lp:~jamesh/mediascanner2/bug-1489489
Merge into: lp:mediascanner2
Diff against target: 82 lines (+29/-13)
1 file modified
src/ms-dbus/service-skeleton.cc (+29/-13)
To merge this branch: bzr merge lp:~jamesh/mediascanner2/bug-1489489
Reviewer Review Type Date Requested Status
Michi Henning (community) Approve
unity-api-1-bot continuous-integration Needs Fixing
Review via email: mp+305337@code.launchpad.net

Commit message

Replace deprecated use of GetConnectionAppArmorSecurityContext method with GetConnectionCredentials.

Description of the change

Replace deprecated use of GetConnectionAppArmorSecurityContext method with GetConnectionCredentials.

To post a comment you must log in.
Revision history for this message
unity-api-1-bot (unity-api-1-bot) wrote :

FAILED: Continuous integration, rev:331
https://jenkins.canonical.com/unity-api-1/job/lp-mediascanner2-ci/9/
Executed test runs:
    FAILURE: https://jenkins.canonical.com/unity-api-1/job/build/596/console
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-0-fetch/602
    FAILURE: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=vivid+overlay/426/console
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=xenial+overlay/426
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=xenial+overlay/426/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=yakkety/426
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=yakkety/426/artifact/output/*zip*/output.zip
    FAILURE: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=vivid+overlay/426/console
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=xenial+overlay/426
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=xenial+overlay/426/artifact/output/*zip*/output.zip
    FAILURE: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=yakkety/426/console
    FAILURE: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=vivid+overlay/426/console
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=xenial+overlay/426
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=xenial+overlay/426/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=yakkety/426
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=yakkety/426/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://jenkins.canonical.com/unity-api-1/job/lp-mediascanner2-ci/9/rebuild

review: Needs Fixing (continuous-integration)
Revision history for this message
Michi Henning (michihenning) wrote :

Looks good to me!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/ms-dbus/service-skeleton.cc'
2--- src/ms-dbus/service-skeleton.cc 2015-07-14 01:34:56 +0000
3+++ src/ms-dbus/service-skeleton.cc 2016-09-09 13:44:04 +0000
4@@ -5,6 +5,7 @@
5 #include <core/dbus/message.h>
6 #include <core/dbus/object.h>
7 #include <core/dbus/types/object_path.h>
8+#include <core/dbus/types/variant.h>
9 #include <sys/apparmor.h>
10
11 #include <mediascanner/Album.hh>
12@@ -16,21 +17,23 @@
13 #include "dbus-codec.hh"
14
15 using core::dbus::Message;
16+using core::dbus::types::ObjectPath;
17+using core::dbus::types::Variant;
18
19 namespace mediascanner {
20 namespace dbus {
21
22-struct Apparmor {
23+struct BusDaemon {
24 static const std::string &name() {
25 static std::string s = "org.freedesktop.DBus";
26 return s;
27 }
28
29- struct GetConnectionAppArmorSecurityContext {
30- typedef Apparmor Interface;
31+ struct GetConnectionCredentials {
32+ typedef BusDaemon Interface;
33
34 static const std::string &name() {
35- static std::string s = "GetConnectionAppArmorSecurityContext";
36+ static std::string s = "GetConnectionCredentials";
37 return s;
38 }
39
40@@ -119,20 +122,33 @@
41 auto service = core::dbus::Service::use_service(
42 impl->access_bus(), "org.freedesktop.DBus");
43 auto obj = service->object_for_path(
44- core::dbus::types::ObjectPath("/org/freedesktop/DBus"));
45+ ObjectPath("/org/freedesktop/DBus"));
46
47- core::dbus::Result<std::string> result;
48+ core::dbus::Result<std::map<std::string,Variant>> result;
49 try {
50- result = obj->invoke_method_synchronously<Apparmor::GetConnectionAppArmorSecurityContext, std::string>(message->sender());
51- } catch (const std::runtime_error &e) {
52- fprintf(stderr, "Error getting apparmor context: %s\n", e.what());
53+ result = obj->invoke_method_synchronously<BusDaemon::GetConnectionCredentials,std::map<std::string,Variant>>(message->sender());
54+ } catch (const std::exception &e) {
55+ fprintf(stderr, "Error getting connection credentials: %s\n", e.what());
56 return std::string();
57 }
58 if (result.is_error()) {
59- fprintf(stderr, "Error getting apparmor context: %s\n", result.error().print().c_str());
60- return std::string();
61- }
62- return result.value();
63+ fprintf(stderr, "Error getting connection credentials: %s\n", result.error().print().c_str());
64+ return std::string();
65+ }
66+ const auto& creds = result.value();
67+ auto it = creds.find("LinuxSecurityLabel");
68+ if (it == creds.end()) {
69+ fprintf(stderr, "Connection credentials don't include security label");
70+ return std::string();
71+ }
72+ std::vector<int8_t> label;
73+ try {
74+ label = it->second.as<std::vector<int8_t>>();
75+ } catch (const std::exception &e) {
76+ fprintf(stderr, "Could not convert security label to byte array");
77+ return std::string();
78+ }
79+ return std::string(aa_splitcon(reinterpret_cast<char*>(&label[0]), nullptr));
80 }
81
82 bool does_client_have_access(const std::string &context, MediaType type) {

Subscribers

People subscribed via source and target branches