2
0
mirror of https://gitlab.com/apparmor/apparmor synced 2025-09-01 06:45:38 +00:00

Fix two bugs

- rpc was failing when passing arrays because the perl is_utf8 string flag
  was set even though its only sending numbers but newer HTTP::Message
  checks for this is_utf8 and if it finds it aborts.
- fix local profiles
  local profiles were failing because
  1.) the parameters to serialize_profile were bad
  2.) the file location was not getting updated so they would get written
      back to the inactive profiles directory
This commit is contained in:
John Johansen
2008-06-03 21:54:55 +00:00
parent cb9f84a61e
commit 9e8c5e9914
2 changed files with 11 additions and 3 deletions

View File

@@ -289,6 +289,13 @@ sub fetch_usernames_from_uids ($) {
}
if (@uids) {
my $repo_client = get_repo_client( $repo_url );
#RPC::XML will serialize the array into XML with the is_utf8 flag set
#which causes, HTTP:Message to fail. Looping on the array elements
#stops this from happening, and since these are all numbers it
#will not cause problems.
my $foo (@uids) {
Encode::_utf8_off($foo);
}
my $res = $repo_client->send_request('LoginNamesFromUserIds', [@uids]);
if (did_result_succeed($res)) {
my @usernames = @{ $res->value };

View File

@@ -726,7 +726,7 @@ sub create_new_profile {
# if the executable exists on this system, pull in extra dependencies
if (-f $fqdbin) {
my $hashbang = head($fqdbin);
if ($hashband && $hashbang =~ /^#!\s*(\S+)/) {
if ($hashbang && $hashbang =~ /^#!\s*(\S+)/) {
my $interpreter = get_full_path($1);
$profile->{$fqdbin}{allow}{path}->{$interpreter}{mode} = str_to_mode("ix");
$profile->{$fqdbin}{allow}{path}->{$interpreter}{audit} = 0;
@@ -795,12 +795,13 @@ sub get_profile {
# set the profile to complain mode
my $uname = gettext( "Inactive local profile for ") . $fqdbin;
$inactive_profile->{$fqdbin}{$fqdbin}{flags} = "complain";
# inactive profiles store where they came from
delete $inactive_profile->{$fqdbin}{$fqdbin}{filename};
$profile_hash{$uname} =
{
"username" => $uname,
"profile_type" => "INACTIVE_LOCAL",
"profile" => serialize_profile(
${%$inactive_profile}{$fqdbin},
"profile" => serialize_profile($inactive_profile->{$fqdbin},
$fqdbin
),
"profile_data" => $inactive_profile,