Merge tag '3.5' into master am: a9f20263fd
am: f01db3250c
Original change: https://android-review.googlesource.com/c/platform/external/selinux/+/2496622 Change-Id: I69f980d27eff7c10a8623ee54df4e6c95b4b4456 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
commit
020ef46b19
153 changed files with 44829 additions and 44145 deletions
27
.github/workflows/run_tests.yml
vendored
27
.github/workflows/run_tests.yml
vendored
|
@ -10,31 +10,30 @@ jobs:
|
|||
matrix:
|
||||
compiler: [gcc, clang]
|
||||
python-ruby-version:
|
||||
- {python: '3.10', ruby: '3.1'}
|
||||
- {python: '3.10', ruby: '3.1', other: test-flags-override}
|
||||
- {python: '3.10', ruby: '3.1', other: test-debug}
|
||||
- {python: '3.10', ruby: '3.1', other: linker-bfd}
|
||||
- {python: '3.10', ruby: '3.1', other: linker-gold}
|
||||
- {python: '3.11', ruby: '3.1'}
|
||||
- {python: '3.11', ruby: '3.1', other: 'test-flags-override'}
|
||||
- {python: '3.11', ruby: '3.1', other: 'test-debug'}
|
||||
- {python: '3.11', ruby: '3.1', other: 'linker-bfd'}
|
||||
- {python: '3.11', ruby: '3.1', other: 'linker-gold'}
|
||||
# Test several Python versions with the latest Ruby version
|
||||
- {python: '3.10', ruby: '3.1'}
|
||||
- {python: '3.9', ruby: '3.1'}
|
||||
- {python: '3.8', ruby: '3.1'}
|
||||
- {python: '3.7', ruby: '3.1'}
|
||||
- {python: '3.6', ruby: '3.1'}
|
||||
- {python: '3.5', ruby: '3.1'}
|
||||
- {python: 'pypy3.7', ruby: '3.1'}
|
||||
# Test several Ruby versions with the latest Python version
|
||||
- {python: '3.10', ruby: '3.0'}
|
||||
- {python: '3.10', ruby: '2.7'}
|
||||
- {python: '3.10', ruby: '2.6'}
|
||||
- {python: '3.10', ruby: '2.5'}
|
||||
- {python: '3.11', ruby: '3.0'}
|
||||
- {python: '3.11', ruby: '2.7'}
|
||||
- {python: '3.11', ruby: '2.6'}
|
||||
- {python: '3.11', ruby: '2.5'}
|
||||
exclude:
|
||||
- compiler: clang
|
||||
python-ruby-version: {python: '3.10', ruby: '3.1', other: linker-bfd}
|
||||
python-ruby-version: {python: '3.11', ruby: '3.1', other: 'linker-bfd'}
|
||||
- compiler: clang
|
||||
python-ruby-version: {python: '3.10', ruby: '3.1', other: linker-gold}
|
||||
python-ruby-version: {python: '3.11', ruby: '3.1', other: 'linker-gold'}
|
||||
include:
|
||||
- compiler: gcc
|
||||
python-ruby-version: {python: '3.10', ruby: '3.1', other: sanitizers}
|
||||
python-ruby-version: {python: '3.11', ruby: '3.1', other: 'sanitizers'}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
|
2
VERSION
2
VERSION
|
@ -1 +1 @@
|
|||
3.5-rc2
|
||||
3.5
|
||||
|
|
|
@ -1 +1 @@
|
|||
3.5-rc2
|
||||
3.5
|
||||
|
|
|
@ -1 +1 @@
|
|||
3.5-rc2
|
||||
3.5
|
||||
|
|
|
@ -1 +1 @@
|
|||
3.5-rc2
|
||||
3.5
|
||||
|
|
10
gui/po/de.po
10
gui/po/de.po
|
@ -8,8 +8,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-08-30 22:52+0200\n"
|
||||
"PO-Revision-Date: 2021-12-28 22:16+0000\n"
|
||||
"POT-Creation-Date: 2023-01-18 11:57+0100\n"
|
||||
"PO-Revision-Date: 2022-10-17 13:19+0000\n"
|
||||
"Last-Translator: Ettore Atalan <atalanttore@googlemail.com>\n"
|
||||
"Language-Team: German <https://translate.fedoraproject.org/projects/selinux/"
|
||||
"gui/de/>\n"
|
||||
|
@ -18,7 +18,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.10.1\n"
|
||||
"X-Generator: Weblate 4.14.1\n"
|
||||
|
||||
#: ../booleansPage.py:199 ../system-config-selinux.ui:999
|
||||
msgid "Boolean"
|
||||
|
@ -657,10 +657,8 @@ msgid "<b>Add booleans from the %s policy:</b>"
|
|||
msgstr "<b>Fügen Sie boolesche Variablen von der %s Richtlinie hinzu:</b>"
|
||||
|
||||
#: ../polgen.ui:2179
|
||||
#, fuzzy
|
||||
#| msgid "Boolean"
|
||||
msgid "Add Boolean"
|
||||
msgstr "Boolean"
|
||||
msgstr "Booleschen Wert hinzufügen"
|
||||
|
||||
#: ../polgen.ui:2234
|
||||
#, python-format
|
||||
|
|
|
@ -10,8 +10,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-08-30 22:52+0200\n"
|
||||
"PO-Revision-Date: 2021-09-11 11:04+0000\n"
|
||||
"POT-Creation-Date: 2023-01-18 11:57+0100\n"
|
||||
"PO-Revision-Date: 2022-10-27 13:20+0000\n"
|
||||
"Last-Translator: Ludek Janda <ljanda@redhat.com>\n"
|
||||
"Language-Team: Japanese <https://translate.fedoraproject.org/projects/"
|
||||
"selinux/gui/ja/>\n"
|
||||
|
@ -20,7 +20,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 4.8\n"
|
||||
"X-Generator: Weblate 4.14.1\n"
|
||||
|
||||
#: ../booleansPage.py:199 ../system-config-selinux.ui:999
|
||||
msgid "Boolean"
|
||||
|
@ -396,7 +396,7 @@ msgstr ""
|
|||
|
||||
#: ../polgen.ui:705
|
||||
msgid "<b>Enter name of application or user role:</b>"
|
||||
msgstr "<b>アプリケーションかユーザーロールの名前を記入:</b>"
|
||||
msgstr "<b>アプリケーションかユーザーロールの名前を入力:</b>"
|
||||
|
||||
#: ../polgen.ui:739
|
||||
msgid "Enter complete path for executable to be confined."
|
||||
|
|
16
gui/po/ka.po
16
gui/po/ka.po
|
@ -3,8 +3,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-08-30 22:52+0200\n"
|
||||
"PO-Revision-Date: 2022-07-21 11:19+0000\n"
|
||||
"POT-Creation-Date: 2023-01-18 11:57+0100\n"
|
||||
"PO-Revision-Date: 2022-11-23 17:19+0000\n"
|
||||
"Last-Translator: Temuri Doghonadze <temuri.doghonadze@gmail.com>\n"
|
||||
"Language-Team: Georgian <https://translate.fedoraproject.org/projects/"
|
||||
"selinux/gui/ka/>\n"
|
||||
|
@ -13,7 +13,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 4.13\n"
|
||||
"X-Generator: Weblate 4.14.2\n"
|
||||
|
||||
#: ../booleansPage.py:199 ../system-config-selinux.ui:999
|
||||
msgid "Boolean"
|
||||
|
@ -284,7 +284,7 @@ msgstr ""
|
|||
|
||||
#: ../polgen.ui:387
|
||||
msgid "User Application"
|
||||
msgstr ""
|
||||
msgstr "მომხმარებლის აპლიკაცია"
|
||||
|
||||
#: ../polgen.ui:391 ../polgen.ui:408
|
||||
msgid ""
|
||||
|
@ -659,7 +659,7 @@ msgstr ""
|
|||
#: ../semanagePage.py:131
|
||||
#, python-format
|
||||
msgid "Are you sure you want to delete %s '%s'?"
|
||||
msgstr ""
|
||||
msgstr "დარწმუნებული ბრძანდებით, რომ გნებავთ, წაშალოთ %s '%s'?"
|
||||
|
||||
#: ../semanagePage.py:131
|
||||
#, python-format
|
||||
|
@ -691,7 +691,7 @@ msgstr "ძალით"
|
|||
|
||||
#: ../statusPage.py:80 ../system-config-selinux.ui:593
|
||||
msgid "Disabled"
|
||||
msgstr "გამორთულია"
|
||||
msgstr "გათიშულია"
|
||||
|
||||
#: ../statusPage.py:99
|
||||
msgid "Status"
|
||||
|
@ -741,7 +741,7 @@ msgstr ""
|
|||
|
||||
#: ../system-config-selinux.ui:117
|
||||
msgid "Login Name"
|
||||
msgstr ""
|
||||
msgstr "მომხმარებლის სახელი"
|
||||
|
||||
#: ../system-config-selinux.ui:128 ../system-config-selinux.ui:1376
|
||||
#: ../system-config-selinux.ui:1911 ../usersPage.py:55
|
||||
|
@ -806,7 +806,7 @@ msgstr ""
|
|||
|
||||
#: ../system-config-selinux.ui:741
|
||||
msgid "<b>Select:</b>"
|
||||
msgstr ""
|
||||
msgstr "<b>აირჩიეთ:</b>"
|
||||
|
||||
#: ../system-config-selinux.ui:771
|
||||
msgid "System Default Enforcing Mode"
|
||||
|
|
10
gui/po/tr.po
10
gui/po/tr.po
|
@ -9,9 +9,9 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-08-30 22:52+0200\n"
|
||||
"PO-Revision-Date: 2021-10-02 18:05+0000\n"
|
||||
"Last-Translator: Oğuz Ersen <oguzersen@protonmail.com>\n"
|
||||
"POT-Creation-Date: 2023-01-18 11:57+0100\n"
|
||||
"PO-Revision-Date: 2022-09-24 15:19+0000\n"
|
||||
"Last-Translator: Oğuz Ersen <oguz@ersen.moe>\n"
|
||||
"Language-Team: Turkish <https://translate.fedoraproject.org/projects/selinux/"
|
||||
"gui/tr/>\n"
|
||||
"Language: tr\n"
|
||||
|
@ -19,7 +19,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n>1);\n"
|
||||
"X-Generator: Weblate 4.8\n"
|
||||
"X-Generator: Weblate 4.14.1\n"
|
||||
|
||||
#: ../booleansPage.py:199 ../system-config-selinux.ui:999
|
||||
msgid "Boolean"
|
||||
|
@ -241,7 +241,7 @@ msgstr "GPL"
|
|||
msgid "translator-credits"
|
||||
msgstr ""
|
||||
"Serdar Sağlam <teknomobil@yandex.com>\n"
|
||||
"Oğuz Ersen <oguzersen@protonmail.com>"
|
||||
"Oğuz Ersen <oguz@ersen.moe>"
|
||||
|
||||
#: ../polgen.ui:34
|
||||
msgid "Add Booleans Dialog"
|
||||
|
|
|
@ -1 +1 @@
|
|||
3.5-rc2
|
||||
3.5
|
||||
|
|
|
@ -54,6 +54,11 @@ extern int getpidcon_raw(pid_t pid, char ** con);
|
|||
extern int getprevcon(char ** con);
|
||||
extern int getprevcon_raw(char ** con);
|
||||
|
||||
/* Get previous context (prior to last exec) of process identified by pid, and
|
||||
set *con to refer to it. Caller must free via freecon. */
|
||||
extern int getpidprevcon(pid_t pid, char ** con);
|
||||
extern int getpidprevcon_raw(pid_t pid, char ** con);
|
||||
|
||||
/* Get exec context, and set *con to refer to it.
|
||||
Sets *con to NULL if no exec context has been set, i.e. using default.
|
||||
If non-NULL, caller must free via freecon. */
|
||||
|
|
|
@ -23,6 +23,10 @@ setcon \- set current security context of a process
|
|||
.sp
|
||||
.BI "int getpidcon_raw(pid_t " pid ", char **" context );
|
||||
.sp
|
||||
.BI "int getpidprevcon(pid_t " pid ", char **" context );
|
||||
.sp
|
||||
.BI "int getpidprevcon_raw(pid_t " pid ", char **" context );
|
||||
.sp
|
||||
.BI "int getpeercon(int " fd ", char **" context );
|
||||
.sp
|
||||
.BI "int getpeercon_raw(int " fd ", char **" context );
|
||||
|
@ -50,6 +54,11 @@ same as getcon but gets the context before the last exec.
|
|||
returns the process context for the specified PID, which must be free'd with
|
||||
.BR freecon ().
|
||||
|
||||
.TP
|
||||
.BR getpidprevcon ()
|
||||
returns the process context before the last exec for the specified PID, which must be free'd with
|
||||
.BR freecon ().
|
||||
|
||||
.TP
|
||||
.BR getpeercon ()
|
||||
retrieves the context of the peer socket, which must be free'd with
|
||||
|
@ -125,6 +134,7 @@ will fail if it is not allowed by policy.
|
|||
.BR getcon_raw (),
|
||||
.BR getprevcon_raw (),
|
||||
.BR getpidcon_raw (),
|
||||
.BR getpidprevcon_raw (),
|
||||
.BR getpeercon_raw ()
|
||||
and
|
||||
.BR setcon_raw ()
|
||||
|
@ -139,5 +149,9 @@ The retrieval functions might return success and set
|
|||
.I *context
|
||||
to NULL if and only if SELinux is not enabled.
|
||||
|
||||
Querying a foreign process via its PID, e.g. \fBgetpidcon\fR() or
|
||||
\fBgetpidprevcon\fR(), is inherently racy and therefore should never be relied
|
||||
upon for security purposes.
|
||||
|
||||
.SH "SEE ALSO"
|
||||
.BR selinux "(8), " setexeccon "(3)"
|
||||
|
|
1
libselinux/man/man3/getpidprevcon.3
Normal file
1
libselinux/man/man3/getpidprevcon.3
Normal file
|
@ -0,0 +1 @@
|
|||
.so man3/getcon.3
|
1
libselinux/man/man3/getpidprevcon_raw.3
Normal file
1
libselinux/man/man3/getpidprevcon_raw.3
Normal file
|
@ -0,0 +1 @@
|
|||
.so man3/getcon.3
|
|
@ -86,7 +86,7 @@ CFLAGS ?= -O -Wall -W -Wundef -Wformat-y2k -Wformat-security -Winit-self -Wmissi
|
|||
-Wno-missing-field-initializers -Wno-sign-compare \
|
||||
-Wno-format-nonliteral -Wframe-larger-than=$(MAX_STACK_SIZE) \
|
||||
-fstack-protector-all --param=ssp-buffer-size=4 -fexceptions \
|
||||
-fasynchronous-unwind-tables -fdiagnostics-show-option -funit-at-a-time \
|
||||
-fasynchronous-unwind-tables -fdiagnostics-show-option \
|
||||
-Werror -Wno-aggregate-return -Wno-redundant-decls \
|
||||
$(EXTRA_CFLAGS)
|
||||
|
||||
|
|
|
@ -246,3 +246,9 @@ LIBSELINUX_3.4 {
|
|||
selinux_restorecon_get_skipped_errors;
|
||||
selinux_restorecon_parallel;
|
||||
} LIBSELINUX_1.0;
|
||||
|
||||
LIBSELINUX_3.5 {
|
||||
global:
|
||||
getpidprevcon;
|
||||
getpidprevcon_raw;
|
||||
} LIBSELINUX_3.4;
|
||||
|
|
|
@ -300,3 +300,21 @@ int getpidcon(pid_t pid, char **c)
|
|||
}
|
||||
return getprocattrcon(c, pid, "current", NULL);
|
||||
}
|
||||
|
||||
int getpidprevcon_raw(pid_t pid, char **c)
|
||||
{
|
||||
if (pid <= 0) {
|
||||
errno = EINVAL;
|
||||
return -1;
|
||||
}
|
||||
return getprocattrcon_raw(c, pid, "prev", NULL);
|
||||
}
|
||||
|
||||
int getpidprevcon(pid_t pid, char **c)
|
||||
{
|
||||
if (pid <= 0) {
|
||||
errno = EINVAL;
|
||||
return -1;
|
||||
}
|
||||
return getprocattrcon(c, pid, "prev", NULL);
|
||||
}
|
||||
|
|
|
@ -432,10 +432,11 @@ static pthread_mutex_t fl_mutex = PTHREAD_MUTEX_INITIALIZER;
|
|||
* that matched.
|
||||
*/
|
||||
static int filespec_add(ino_t ino, const char *con, const char *file,
|
||||
struct rest_flags *flags)
|
||||
const struct rest_flags *flags)
|
||||
{
|
||||
file_spec_t *prevfl, *fl;
|
||||
int h, ret;
|
||||
uint32_t h;
|
||||
int ret;
|
||||
struct stat64 sb;
|
||||
|
||||
__pthread_mutex_lock(&fl_mutex);
|
||||
|
@ -524,7 +525,8 @@ unlock_1:
|
|||
static void filespec_eval(void)
|
||||
{
|
||||
file_spec_t *fl;
|
||||
int h, used, nel, len, longest;
|
||||
uint32_t h;
|
||||
size_t used, nel, len, longest;
|
||||
|
||||
if (!fl_head)
|
||||
return;
|
||||
|
@ -544,7 +546,7 @@ static void filespec_eval(void)
|
|||
}
|
||||
|
||||
selinux_log(SELINUX_INFO,
|
||||
"filespec hash table stats: %d elements, %d/%d buckets used, longest chain length %d\n",
|
||||
"filespec hash table stats: %zu elements, %zu/%zu buckets used, longest chain length %zu\n",
|
||||
nel, used, HASH_BUCKETS, longest);
|
||||
}
|
||||
#else
|
||||
|
@ -559,7 +561,7 @@ static void filespec_eval(void)
|
|||
static void filespec_destroy(void)
|
||||
{
|
||||
file_spec_t *fl, *tmp;
|
||||
int h;
|
||||
uint32_t h;
|
||||
|
||||
if (!fl_head)
|
||||
return;
|
||||
|
@ -624,15 +626,13 @@ out:
|
|||
}
|
||||
|
||||
static int restorecon_sb(const char *pathname, const struct stat *sb,
|
||||
struct rest_flags *flags, bool first)
|
||||
const struct rest_flags *flags, bool first)
|
||||
{
|
||||
char *newcon = NULL;
|
||||
char *curcon = NULL;
|
||||
char *newtypecon = NULL;
|
||||
int rc;
|
||||
bool updated = false;
|
||||
const char *lookup_path = pathname;
|
||||
float pc;
|
||||
|
||||
if (rootpath) {
|
||||
if (strncmp(rootpath, lookup_path, rootpathlen) != 0) {
|
||||
|
@ -647,10 +647,10 @@ static int restorecon_sb(const char *pathname, const struct stat *sb,
|
|||
if (rootpath != NULL && lookup_path[0] == '\0')
|
||||
/* this is actually the root dir of the alt root. */
|
||||
rc = selabel_lookup_raw(fc_sehandle, &newcon, "/",
|
||||
sb->st_mode);
|
||||
sb->st_mode & S_IFMT);
|
||||
else
|
||||
rc = selabel_lookup_raw(fc_sehandle, &newcon, lookup_path,
|
||||
sb->st_mode);
|
||||
sb->st_mode & S_IFMT);
|
||||
|
||||
if (rc < 0) {
|
||||
if (errno == ENOENT) {
|
||||
|
@ -670,7 +670,7 @@ static int restorecon_sb(const char *pathname, const struct stat *sb,
|
|||
fc_count++;
|
||||
if (fc_count % STAR_COUNT == 0) {
|
||||
if (flags->mass_relabel && efile_count > 0) {
|
||||
pc = (fc_count < efile_count) ? (100.0 *
|
||||
float pc = (fc_count < efile_count) ? (100.0 *
|
||||
fc_count / efile_count) : 100;
|
||||
fprintf(stdout, "\r%-.1f%%", (double)pc);
|
||||
} else {
|
||||
|
@ -710,6 +710,8 @@ static int restorecon_sb(const char *pathname, const struct stat *sb,
|
|||
}
|
||||
|
||||
if (curcon == NULL || strcmp(curcon, newcon) != 0) {
|
||||
bool updated = false;
|
||||
|
||||
if (!flags->set_specctx && curcon &&
|
||||
(is_context_customizable(curcon) > 0)) {
|
||||
if (flags->verbose) {
|
||||
|
|
|
@ -4,7 +4,7 @@ from setuptools import Extension, setup
|
|||
|
||||
setup(
|
||||
name="selinux",
|
||||
version="3.5-rc2",
|
||||
version="3.5",
|
||||
description="SELinux python 3 bindings",
|
||||
author="SELinux Project",
|
||||
author_email="selinux@vger.kernel.org",
|
||||
|
|
1
libselinux/utils/.gitignore
vendored
1
libselinux/utils/.gitignore
vendored
|
@ -9,6 +9,7 @@ getdefaultcon
|
|||
getenforce
|
||||
getfilecon
|
||||
getpidcon
|
||||
getpidprevcon
|
||||
getsebool
|
||||
getseuser
|
||||
matchpathcon
|
||||
|
|
|
@ -32,7 +32,7 @@ CFLAGS ?= -O -Wall -W -Wundef -Wformat-y2k -Wformat-security -Winit-self -Wmissi
|
|||
-Wno-missing-field-initializers -Wno-sign-compare \
|
||||
-Wno-format-nonliteral -Wframe-larger-than=$(MAX_STACK_SIZE) -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 \
|
||||
-fstack-protector-all --param=ssp-buffer-size=4 -fexceptions \
|
||||
-fasynchronous-unwind-tables -fdiagnostics-show-option -funit-at-a-time \
|
||||
-fasynchronous-unwind-tables -fdiagnostics-show-option \
|
||||
-Werror -Wno-aggregate-return -Wno-redundant-decls -Wstrict-overflow=5 \
|
||||
$(EXTRA_CFLAGS)
|
||||
|
||||
|
|
33
libselinux/utils/getpidprevcon.c
Normal file
33
libselinux/utils/getpidprevcon.c
Normal file
|
@ -0,0 +1,33 @@
|
|||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <selinux/selinux.h>
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
pid_t pid;
|
||||
char *buf;
|
||||
int rc;
|
||||
|
||||
if (argc != 2) {
|
||||
fprintf(stderr, "usage: %s pid\n", argv[0]);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (sscanf(argv[1], "%d", &pid) != 1) {
|
||||
fprintf(stderr, "%s: invalid pid %s\n", argv[0], argv[1]);
|
||||
exit(2);
|
||||
}
|
||||
|
||||
rc = getpidprevcon(pid, &buf);
|
||||
if (rc < 0) {
|
||||
fprintf(stderr, "%s: getpidprevcon() failed: %s\n", argv[0], strerror(errno));
|
||||
exit(3);
|
||||
}
|
||||
|
||||
printf("%s\n", buf);
|
||||
freecon(buf);
|
||||
exit(EXIT_SUCCESS);
|
||||
}
|
|
@ -1 +1 @@
|
|||
3.5-rc2
|
||||
3.5
|
||||
|
|
|
@ -1 +1 @@
|
|||
3.5-rc2
|
||||
3.5
|
||||
|
|
|
@ -1 +1 @@
|
|||
3.5-rc2
|
||||
3.5
|
||||
|
|
|
@ -9,6 +9,7 @@ Conflicts=shutdown.target
|
|||
[Service]
|
||||
ExecStart=/sbin/mcstransd -f
|
||||
RuntimeDirectory=setrans
|
||||
RuntimeDirectoryPreserve=true
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
|
|
@ -1 +1 @@
|
|||
3.5-rc2
|
||||
3.5
|
||||
|
|
|
@ -3,17 +3,18 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-08-30 22:52+0200\n"
|
||||
"PO-Revision-Date: 2016-01-06 06:54-0500\n"
|
||||
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
|
||||
"Language-Team: Arabic\n"
|
||||
"POT-Creation-Date: 2023-01-18 11:57+0100\n"
|
||||
"PO-Revision-Date: 2023-01-14 17:20+0000\n"
|
||||
"Last-Translator: Amro Hatem <amro_hatem_1@outlook.com>\n"
|
||||
"Language-Team: Arabic <https://translate.fedoraproject.org/projects/selinux/"
|
||||
"policycoreutils/ar/>\n"
|
||||
"Language: ar\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=6; plural= n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
|
||||
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
|
||||
"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
|
||||
"X-Generator: Zanata 4.6.2\n"
|
||||
"X-Generator: Weblate 4.15\n"
|
||||
|
||||
#: ../run_init/run_init.c:67
|
||||
msgid ""
|
||||
|
@ -243,7 +244,7 @@ msgstr "فشل في ضبط مدى جديد %s\n"
|
|||
#: ../newrole/newrole.c:977
|
||||
#, c-format
|
||||
msgid "failed to convert new context to string\n"
|
||||
msgstr "فشل في في تحويل السياق الجديد إلى نص\n"
|
||||
msgstr "فشل في تحويل السياق الجديد إلى نص\n"
|
||||
|
||||
#: ../newrole/newrole.c:982
|
||||
#, c-format
|
||||
|
|
|
@ -3,16 +3,17 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-08-30 22:52+0200\n"
|
||||
"PO-Revision-Date: 2018-08-21 10:26-0400\n"
|
||||
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
|
||||
"Language-Team: German\n"
|
||||
"POT-Creation-Date: 2023-01-18 11:57+0100\n"
|
||||
"PO-Revision-Date: 2022-10-17 12:19+0000\n"
|
||||
"Last-Translator: Ettore Atalan <atalanttore@googlemail.com>\n"
|
||||
"Language-Team: German <https://translate.fedoraproject.org/projects/selinux/"
|
||||
"policycoreutils/de/>\n"
|
||||
"Language: de\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
"X-Generator: Zanata 4.6.2\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.14.1\n"
|
||||
|
||||
#: ../run_init/run_init.c:67
|
||||
msgid ""
|
||||
|
@ -99,7 +100,7 @@ msgstr "newrole: %s: Fehler in Zeile %lu.\n"
|
|||
#: ../newrole/newrole.c:385
|
||||
#, c-format
|
||||
msgid "Cannot encrypt password.\n"
|
||||
msgstr ""
|
||||
msgstr "Passwort kann nicht verschlüsselt werden.\n"
|
||||
|
||||
#: ../newrole/newrole.c:449
|
||||
#, c-format
|
||||
|
|
|
@ -4,9 +4,9 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-08-30 22:52+0200\n"
|
||||
"PO-Revision-Date: 2020-08-28 03:29+0000\n"
|
||||
"Last-Translator: Julien Humbert <julroy67@gmail.com>\n"
|
||||
"POT-Creation-Date: 2023-01-18 11:57+0100\n"
|
||||
"PO-Revision-Date: 2022-10-06 08:19+0000\n"
|
||||
"Last-Translator: Ludek Janda <ljanda@redhat.com>\n"
|
||||
"Language-Team: French <https://translate.fedoraproject.org/projects/selinux/"
|
||||
"policycoreutils/fr/>\n"
|
||||
"Language: fr\n"
|
||||
|
@ -14,7 +14,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 4.2.1\n"
|
||||
"X-Generator: Weblate 4.14.1\n"
|
||||
|
||||
#: ../run_init/run_init.c:67
|
||||
msgid ""
|
||||
|
@ -102,7 +102,7 @@ msgstr "nouveau rôle : %s : erreur à la ligne %lu.\n"
|
|||
#: ../newrole/newrole.c:385
|
||||
#, c-format
|
||||
msgid "Cannot encrypt password.\n"
|
||||
msgstr ""
|
||||
msgstr "Impossible de crypter le mot de passe.\n"
|
||||
|
||||
#: ../newrole/newrole.c:449
|
||||
#, c-format
|
||||
|
|
|
@ -3,8 +3,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-08-30 22:52+0200\n"
|
||||
"PO-Revision-Date: 2022-09-01 08:42+0000\n"
|
||||
"POT-Creation-Date: 2023-01-18 11:57+0100\n"
|
||||
"PO-Revision-Date: 2022-09-23 11:19+0000\n"
|
||||
"Last-Translator: 김인수 <simmon@nplob.com>\n"
|
||||
"Language-Team: Korean <https://translate.fedoraproject.org/projects/selinux/"
|
||||
"policycoreutils/ko/>\n"
|
||||
|
@ -13,7 +13,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 4.14\n"
|
||||
"X-Generator: Weblate 4.14.1\n"
|
||||
|
||||
#: ../run_init/run_init.c:67
|
||||
msgid ""
|
||||
|
@ -107,7 +107,7 @@ msgstr "비밀번호 파일에서 유효한 엔트리를 찾을 수 없습니다
|
|||
#: ../newrole/newrole.c:460
|
||||
#, c-format
|
||||
msgid "Out of memory!\n"
|
||||
msgstr "메모리가 다 찼습니다!\n"
|
||||
msgstr "메모리 부족!\n"
|
||||
|
||||
#: ../newrole/newrole.c:465
|
||||
#, c-format
|
||||
|
|
|
@ -5,16 +5,17 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-08-30 22:52+0200\n"
|
||||
"PO-Revision-Date: 2017-12-15 09:06-0500\n"
|
||||
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
|
||||
"Language-Team: Swedish\n"
|
||||
"POT-Creation-Date: 2023-01-18 11:57+0100\n"
|
||||
"PO-Revision-Date: 2022-09-08 15:19+0000\n"
|
||||
"Last-Translator: Luna Jernberg <bittin@reimu.nl>\n"
|
||||
"Language-Team: Swedish <https://translate.fedoraproject.org/projects/selinux/"
|
||||
"policycoreutils/sv/>\n"
|
||||
"Language: sv\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
"X-Generator: Zanata 4.6.2\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.14\n"
|
||||
|
||||
#: ../run_init/run_init.c:67
|
||||
msgid ""
|
||||
|
@ -98,7 +99,7 @@ msgstr "newrole: %s: fel på rad %lu.\n"
|
|||
#: ../newrole/newrole.c:385
|
||||
#, c-format
|
||||
msgid "Cannot encrypt password.\n"
|
||||
msgstr ""
|
||||
msgstr "Kan inte kryptera lösenord.\n"
|
||||
|
||||
#: ../newrole/newrole.c:449
|
||||
#, c-format
|
||||
|
|
|
@ -4,9 +4,9 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-08-30 22:52+0200\n"
|
||||
"PO-Revision-Date: 2021-01-10 20:36+0000\n"
|
||||
"Last-Translator: Oğuz Ersen <oguzersen@protonmail.com>\n"
|
||||
"POT-Creation-Date: 2023-01-18 11:57+0100\n"
|
||||
"PO-Revision-Date: 2022-11-25 17:19+0000\n"
|
||||
"Last-Translator: Oğuz Ersen <oguz@ersen.moe>\n"
|
||||
"Language-Team: Turkish <https://translate.fedoraproject.org/projects/selinux/"
|
||||
"policycoreutils/tr/>\n"
|
||||
"Language: tr\n"
|
||||
|
@ -14,7 +14,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n>1);\n"
|
||||
"X-Generator: Weblate 4.4\n"
|
||||
"X-Generator: Weblate 4.14.2\n"
|
||||
|
||||
#: ../run_init/run_init.c:67
|
||||
msgid ""
|
||||
|
@ -98,7 +98,7 @@ msgstr "newrole: %s: %lu. satırda hata.\n"
|
|||
#: ../newrole/newrole.c:385
|
||||
#, c-format
|
||||
msgid "Cannot encrypt password.\n"
|
||||
msgstr ""
|
||||
msgstr "Parola şifrelenemiyor.\n"
|
||||
|
||||
#: ../newrole/newrole.c:449
|
||||
#, c-format
|
||||
|
|
|
@ -1 +1 @@
|
|||
3.5-rc2
|
||||
3.5
|
||||
|
|
965
python/po/af.po
965
python/po/af.po
File diff suppressed because it is too large
Load diff
965
python/po/am.po
965
python/po/am.po
File diff suppressed because it is too large
Load diff
965
python/po/ar.po
965
python/po/ar.po
File diff suppressed because it is too large
Load diff
947
python/po/as.po
947
python/po/as.po
File diff suppressed because it is too large
Load diff
965
python/po/ast.po
965
python/po/ast.po
File diff suppressed because it is too large
Load diff
965
python/po/bal.po
965
python/po/bal.po
File diff suppressed because it is too large
Load diff
965
python/po/be.po
965
python/po/be.po
File diff suppressed because it is too large
Load diff
965
python/po/bg.po
965
python/po/bg.po
File diff suppressed because it is too large
Load diff
965
python/po/bn.po
965
python/po/bn.po
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
965
python/po/br.po
965
python/po/br.po
File diff suppressed because it is too large
Load diff
965
python/po/brx.po
965
python/po/brx.po
File diff suppressed because it is too large
Load diff
965
python/po/bs.po
965
python/po/bs.po
File diff suppressed because it is too large
Load diff
947
python/po/ca.po
947
python/po/ca.po
File diff suppressed because it is too large
Load diff
947
python/po/cs.po
947
python/po/cs.po
File diff suppressed because it is too large
Load diff
965
python/po/cy.po
965
python/po/cy.po
File diff suppressed because it is too large
Load diff
947
python/po/da.po
947
python/po/da.po
File diff suppressed because it is too large
Load diff
964
python/po/de.po
964
python/po/de.po
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
965
python/po/el.po
965
python/po/el.po
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
965
python/po/eo.po
965
python/po/eo.po
File diff suppressed because it is too large
Load diff
947
python/po/es.po
947
python/po/es.po
File diff suppressed because it is too large
Load diff
965
python/po/et.po
965
python/po/et.po
File diff suppressed because it is too large
Load diff
965
python/po/eu.po
965
python/po/eu.po
File diff suppressed because it is too large
Load diff
965
python/po/fa.po
965
python/po/fa.po
File diff suppressed because it is too large
Load diff
951
python/po/fi.po
951
python/po/fi.po
File diff suppressed because it is too large
Load diff
965
python/po/fil.po
965
python/po/fil.po
File diff suppressed because it is too large
Load diff
953
python/po/fr.po
953
python/po/fr.po
File diff suppressed because it is too large
Load diff
965
python/po/fur.po
965
python/po/fur.po
File diff suppressed because it is too large
Load diff
965
python/po/ga.po
965
python/po/ga.po
File diff suppressed because it is too large
Load diff
965
python/po/gl.po
965
python/po/gl.po
File diff suppressed because it is too large
Load diff
947
python/po/gu.po
947
python/po/gu.po
File diff suppressed because it is too large
Load diff
965
python/po/he.po
965
python/po/he.po
File diff suppressed because it is too large
Load diff
947
python/po/hi.po
947
python/po/hi.po
File diff suppressed because it is too large
Load diff
965
python/po/hr.po
965
python/po/hr.po
File diff suppressed because it is too large
Load diff
947
python/po/hu.po
947
python/po/hu.po
File diff suppressed because it is too large
Load diff
965
python/po/ia.po
965
python/po/ia.po
File diff suppressed because it is too large
Load diff
965
python/po/id.po
965
python/po/id.po
File diff suppressed because it is too large
Load diff
965
python/po/ilo.po
965
python/po/ilo.po
File diff suppressed because it is too large
Load diff
965
python/po/is.po
965
python/po/is.po
File diff suppressed because it is too large
Load diff
947
python/po/it.po
947
python/po/it.po
File diff suppressed because it is too large
Load diff
953
python/po/ja.po
953
python/po/ja.po
File diff suppressed because it is too large
Load diff
1129
python/po/ka.po
1129
python/po/ka.po
File diff suppressed because it is too large
Load diff
965
python/po/kk.po
965
python/po/kk.po
File diff suppressed because it is too large
Load diff
965
python/po/km.po
965
python/po/km.po
File diff suppressed because it is too large
Load diff
947
python/po/kn.po
947
python/po/kn.po
File diff suppressed because it is too large
Load diff
951
python/po/ko.po
951
python/po/ko.po
File diff suppressed because it is too large
Load diff
965
python/po/ky.po
965
python/po/ky.po
File diff suppressed because it is too large
Load diff
965
python/po/lt.po
965
python/po/lt.po
File diff suppressed because it is too large
Load diff
965
python/po/lv.po
965
python/po/lv.po
File diff suppressed because it is too large
Load diff
965
python/po/mai.po
965
python/po/mai.po
File diff suppressed because it is too large
Load diff
965
python/po/mk.po
965
python/po/mk.po
File diff suppressed because it is too large
Load diff
947
python/po/ml.po
947
python/po/ml.po
File diff suppressed because it is too large
Load diff
965
python/po/mn.po
965
python/po/mn.po
File diff suppressed because it is too large
Load diff
947
python/po/mr.po
947
python/po/mr.po
File diff suppressed because it is too large
Load diff
965
python/po/ms.po
965
python/po/ms.po
File diff suppressed because it is too large
Load diff
965
python/po/my.po
965
python/po/my.po
File diff suppressed because it is too large
Load diff
965
python/po/nb.po
965
python/po/nb.po
File diff suppressed because it is too large
Load diff
965
python/po/nds.po
965
python/po/nds.po
File diff suppressed because it is too large
Load diff
965
python/po/ne.po
965
python/po/ne.po
File diff suppressed because it is too large
Load diff
947
python/po/nl.po
947
python/po/nl.po
File diff suppressed because it is too large
Load diff
965
python/po/nn.po
965
python/po/nn.po
File diff suppressed because it is too large
Load diff
965
python/po/nso.po
965
python/po/nso.po
File diff suppressed because it is too large
Load diff
947
python/po/or.po
947
python/po/or.po
File diff suppressed because it is too large
Load diff
947
python/po/pa.po
947
python/po/pa.po
File diff suppressed because it is too large
Load diff
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue