Hello community, here is the log from the commit of package mcstrans for openSUSE:Factory checked in at 2019-03-24 14:55:28 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/mcstrans (Old) and /work/SRC/openSUSE:Factory/.mcstrans.new.25356 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mcstrans" Sun Mar 24 14:55:28 2019 rev:21 rq:687218 version:2.9 Changes: -------- --- /work/SRC/openSUSE:Factory/mcstrans/mcstrans.changes 2018-12-12 17:26:47.319006018 +0100 +++ /work/SRC/openSUSE:Factory/.mcstrans.new.25356/mcstrans.changes 2019-03-24 14:55:31.123211460 +0100 @@ -1,0 +2,7 @@ +Wed Mar 20 15:14:52 UTC 2019 - jseg...@suse.com + +- Update to version 2.9 + * Fix check in raw_color() + * remove unused getpeercon_raw() call + +------------------------------------------------------------------- Old: ---- mcstrans-2.8.tar.gz New: ---- mcstrans-2.9.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ mcstrans.spec ++++++ --- /var/tmp/diff_new_pack.Yeae7A/_old 2019-03-24 14:55:31.551211415 +0100 +++ /var/tmp/diff_new_pack.Yeae7A/_new 2019-03-24 14:55:31.551211415 +0100 @@ -1,7 +1,7 @@ # # spec file for package mcstrans # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -12,20 +12,18 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# Please submit bugfixes or comments via http://bugs.opensuse.org/ # -%define tstamp 20180524 - Name: mcstrans -Version: 2.8 +Version: 2.9 Release: 0 Summary: SELinux Translation Daemon License: GPL-2.0-or-later Group: System/Management URL: https://github.com/SELinuxProject/selinux/wiki -Source: https://raw.githubusercontent.com/wiki/SELinuxProject/selinux/files/releases/%{tstamp}/%{name}-%{version}.tar.gz +Source: https://github.com/SELinuxProject/selinux/releases/download/20190315/%{name}-%{version}.tar.gz Patch0: %{name}-writepid.patch Patch1: add_includes.patch BuildRequires: aaa_base @@ -91,9 +89,8 @@ %{_unitdir}/mcstrans*.service /sbin/mcstransd %{_sbindir}/rcmcstrans -%{_mandir}/man8/mcs.8%{?ext_man} -%{_mandir}/man8/mcstransd.8%{?ext_man} -%{_mandir}/man8/setrans.conf.8%{?ext_man} +%{_mandir}/man8/*.8%{?ext_man} +%{_mandir}/ru/man8/*.8%{?ext_man} %dir %{_datadir}/doc/packages/%{name} %{_datadir}/doc/packages/%{name}/* ++++++ mcstrans-2.8.tar.gz -> mcstrans-2.9.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mcstrans-2.8/VERSION new/mcstrans-2.9/VERSION --- old/mcstrans-2.8/VERSION 2018-05-24 20:21:09.000000000 +0200 +++ new/mcstrans-2.9/VERSION 2019-03-15 11:32:30.000000000 +0100 @@ -1 +1 @@ -2.8 +2.9 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mcstrans-2.8/man/Makefile new/mcstrans-2.9/man/Makefile --- old/mcstrans-2.8/man/Makefile 2018-05-24 20:21:09.000000000 +0200 +++ new/mcstrans-2.9/man/Makefile 2019-03-15 11:32:30.000000000 +0100 @@ -1,12 +1,21 @@ # Installation directories. +LINGUAS ?= ru PREFIX ?= /usr -MAN8DIR ?= $(PREFIX)/share/man/man8 +MANDIR ?= $(PREFIX)/share/man +MAN8SUBDIR ?= man8 +MAN8DIR ?= $(MANDIR)/$(MAN8SUBDIR) all: install: all mkdir -p $(DESTDIR)$(MAN8DIR) install -m 644 man8/*.8 $(DESTDIR)$(MAN8DIR) + for lang in $(LINGUAS) ; do \ + if [ -e $${lang}/man8 ] ; then \ + mkdir -p $(DESTDIR)$(MANDIR)/$${lang}/$(MAN8SUBDIR) ; \ + install -m 644 $${lang}/man8/*.8 $(DESTDIR)$(MANDIR)/$${lang}/$(MAN8SUBDIR) ; \ + fi ; \ + done clean: -rm -f *~ \#* diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mcstrans-2.8/man/man8/setrans.conf.8 new/mcstrans-2.9/man/man8/setrans.conf.8 --- old/mcstrans-2.8/man/man8/setrans.conf.8 2018-05-24 20:21:09.000000000 +0200 +++ new/mcstrans-2.9/man/man8/setrans.conf.8 2019-03-15 11:32:30.000000000 +0100 @@ -59,7 +59,7 @@ .TP s0\-s15:c0.c1023=SystemLow\-SystemHigh\fR -defines a range translation of of s0\-s15:c0.c1023 to SystemLow\-SystemHigh. The two range components are separated by a dash. +defines a range translation of s0\-s15:c0.c1023 to SystemLow\-SystemHigh. The two range components are separated by a dash. .TP s0:c0=PatientRecord\fR diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mcstrans-2.8/man/ru/man8/mcs.8 new/mcstrans-2.9/man/ru/man8/mcs.8 --- old/mcstrans-2.8/man/ru/man8/mcs.8 1970-01-01 01:00:00.000000000 +0100 +++ new/mcstrans-2.9/man/ru/man8/mcs.8 2019-03-15 11:32:30.000000000 +0100 @@ -0,0 +1,24 @@ +.TH "mcs" "8" "8 сентября 2005" "dwa...@redhat.com" "Документация по MCS" + +.SH "ИМЯ" +mcs \- мультикатегорийная система + +.SH "ОПИСАНИЕ" +MCS (мультикатегорийная система) позволяет пользователям проставлять в своей системе метки для файлов внутри определённых администратором категорий. Затем эта система использует принудительное управление доступом SELinux, чтобы защитить эти файлы. MCS - дискреционная модель, которая позволяет пользователям отмечать свои данные дополнительными тегами, накладывая дальнейшие ограничения доступа. Обязательным является только один аспект - авторизовывать пользователей для категорий, определяя их уровень допуска в политике. MCS похожа на MLS, выполняет те же самые пути кода и использует ту же самую инфраструктуру поддержки. Они отличаются между собой только спецификой настройки. + + +Файл конфигурации +.I /etc/selinux/{SELINUXTYPE}/setrans.conf +преобразовывает метки на диске в удобную для прочтения человеком форму. В этом файле администраторы могут определить любые необходимые метки. +Некоторые приложения, такие как вывод на экран и аудит, будут использовать эти метки для идентификации файлов. Если для файла будет задана категория, другие приложения/службы не получат к нему доступ. +.P +Примеры меток файлов: PatientRecord, CompanyConfidential и так далее. + +.SH "СМОТРИТЕ ТАКЖЕ" +selinux(8), chcon(1) + +.SH ФАЙЛЫ +/etc/selinux/{SELINUXTYPE}/setrans.conf + +.SH АВТОРЫ +Перевод на русский язык выполнила Герасименко Олеся <gamma...@basealt.ru> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mcstrans-2.8/man/ru/man8/mcstransd.8 new/mcstrans-2.9/man/ru/man8/mcstransd.8 --- old/mcstrans-2.8/man/ru/man8/mcstransd.8 1970-01-01 01:00:00.000000000 +0100 +++ new/mcstrans-2.9/man/ru/man8/mcstransd.8 2019-03-15 11:32:30.000000000 +0100 @@ -0,0 +1,32 @@ +.TH "mcstransd" "8" "16 октября 2009" "dwa...@redhat.com" "Документация по MCS" +.SH "ИМЯ" +mcstransd \- внутренняя служба MCS (мультикатегорийная система). Переводит метки MCS/MLS SELinux в удобную для прочтения человеком форму. + +.SH "ОБЗОР" +.B mcstransd [-f] [-h] +.P + +.SH "ОПИСАНИЕ" +Эта страница руководства содержит описание программы +.BR mcstransd. +.P +Эта внутренняя служба выполняет чтение файла конфигурации /etc/selinux/{SELINUXTYPE}/setrans.conf и связывается с libselinux через сокет в /var/run/setrans. +.SH "ПАРАМЕТРЫ" +.TP +\-f +Запустить mcstransd на переднем плане. Не запускать как внутреннюю службу. +.TP +\-h +Вывести краткое описание доступных параметров командной строки\&. + +.SH "ФАЙЛЫ" +/etc/selinux/{SELINUXTYPE}/setrans.conf + +.SH "СМОТРИТЕ ТАКЖЕ" +.BR mcs (8) + +.SH "АВТОРЫ" +Эта man-страница написана Dan Walsh <dwa...@redhat.com>. +Исходная версия программы написана Dan Walsh <dwa...@redhat.com>. +Программа улучшена/переписана Joe Nall <j...@nall.com>. +Перевод на русский язык выполнила Герасименко Олеся <gamma...@basealt.ru>. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mcstrans-2.8/man/ru/man8/setrans.conf.8 new/mcstrans-2.9/man/ru/man8/setrans.conf.8 --- old/mcstrans-2.8/man/ru/man8/setrans.conf.8 1970-01-01 01:00:00.000000000 +0100 +++ new/mcstrans-2.9/man/ru/man8/setrans.conf.8 2019-03-15 11:32:30.000000000 +0100 @@ -0,0 +1,106 @@ +.TH "setrans.conf" "8" "13 июля 2010" "txt...@gmail.com" "Документация по setrans.conf" +.SH "ИМЯ" +setrans.conf \- файл конфигурации преобразования для систем MCS/MLS SELinux + +.SH "ОПИСАНИЕ" +Файл конфигурации +.I /etc/selinux/{SELINUXTYPE}/setrans.conf +определяет способ, которым метки SELinux MCS/MLS преобразовываются в удобную для прочтения человеком форму с помощью внутренней службы mcstransd. Политики по умолчанию поддерживают 16 уровней конфиденциальности (от s0 до s15) и 1024 категории (от c0 до c1023). Если категорий несколько, их можно разделить запятыми (c0,c1,c3,c5), а диапазон категорий - сократить с помощью указания через точку (c0.c3,c5). + +.SS "Ключевые слова" + +.TP +Base\fR +когда объявляется база, ко всем последующим определениям меток конфиденциальности будут при преобразовании применяться модификаторы. +Метки конфиденциальности, которые были определены до объявления базы, незамедлительно кэшируются, и к ним не применяются модификаторы; они используются в качестве прямого преобразования. + +.TP +Default\fR +определяет битовый диапазон категорий, который будет использоваться для обратных битов. + +.TP +Domain\fR +создаёт новый домен с указанным именем. + +.TP +Include\fR +прочитать и обработать содержимое указанного файла конфигурации. + +.TP +Join\fR +определяет символ, который используется для разделения участников группы модификаторов, когда указано более одного (например, USA/AUS). + +.TP +ModifierGroup\fR +средство группировки битовых определений категорий по тому, как они изменяют метку конфиденциальности. + +.TP +Prefix\fR +слова (слова), которое может предшествовать участнику (участникам) группы модификаторов (например, REL USA). + +.TP +Suffix\fR +слово (слова), которое может следовать за участником (участниками) группы модификаторов (например, USA EYES ONLY). + +.TP +Whitespace\fR +определяет набор допустимых пробельных символов, которые могут использоваться в преобразовываемой метке. + +.SS "Примеры определения уровня конфиденциальности" + +.TP +s0=SystemLow\fR +определяет преобразование s0 (минимального уровня конфиденциальности) без категорий в SystemLow. + +.TP +s15:c0.c1023=SystemHigh\fR +определяет преобразование s15:c0.c1023 в SystemHigh. c0.c1023 - сокращённое обозначение всех категорий. Уровень конфиденциальности и категории разделены двоеточием. + +.TP +s0\-s15:c0.c1023=SystemLow\-SystemHigh\fR +определяет преобразование диапазона s0\-s15:c0.c1023 в SystemLow\-SystemHigh. Два компонента диапазона разделены дефисом. + +.TP +s0:c0=PatientRecord\fR +определяет преобразование уровня конфиденциальности s0 с категорией c0 в PatientRecord. + +.TP +s0:c1=Accounting\fR +определяет преобразование уровня конфиденциальности s0 с категорией c1 в Accounting. + +.TP +s2:c1,c2,c3=Confidential3Categories +.TP +s2:c1.c3=Confidential3Categories\fR +и то, и другое определяет преобразование уровня конфиденциальности s2 с категориями c1, c2 и c3 в Confidential3Categories. + +.TP +s5=TopSecret\fR +определяет преобразование уровня конфиденциальности s5 без категорий в TopSecret. + +.SS "Примеры ограничения" + +.TP +c0!c1 +если одновременно заданы биты категорий 0 и 1, ограничение не сработает и будет возвращён исходный контекст. + +.TP +c5.c9>c1 +если заданы биты категорий с 5 по 9, бит 1 также необходимо установить - иначе ограничение не сработает и будет возвращён исходный контекст. + +.TP +s1!c5,c9 +если заданы биты категорий с 5 по 9 и уровень конфиденциальности равен s1, ограничение не сработает и будет возвращён исходный контекст. + +.SH "ФАЙЛЫ" +/etc/selinux/{SELINUXTYPE}/setrans.conf +.br +/usr/share/mcstrans/examples + +.SH "СМОТРИТЕ ТАКЖЕ" +selinux(8), mcs(8), mls(8), chcon(1) + +.SH "АВТОРЫ" + Написано Joe Nall <j...@nall.com>. + Обновлено Ted X. Toth <txt...@gmail.com>. + Перевод на русский язык выполнила Герасименко Олеся <gamma...@basealt.ru>. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mcstrans-2.8/share/util/mlscolor-test new/mcstrans-2.9/share/util/mlscolor-test --- old/mcstrans-2.8/share/util/mlscolor-test 2018-05-24 20:21:09.000000000 +0200 +++ new/mcstrans-2.9/share/util/mlscolor-test 2019-03-15 11:32:30.000000000 +0100 @@ -1,7 +1,8 @@ -#!/usr/bin/python -E +#!/usr/bin/python3 -E import sys -import re -from selinux import * +import selinux + + verbose = 0 errors = 0 @@ -18,19 +19,19 @@ line = line.rstrip('\n') # print line context, expected = line.split("=") - rc, raw = selinux_trans_to_raw_context(context) + rc, raw = selinux.selinux_trans_to_raw_context(context) if rc < 0: - print "Unable to get raw context of '%s'" % (context) + print("Unable to get raw context of '%s'" % (context)) errors += 1 continue - rc, colors = selinux_raw_context_to_color(raw) + rc, colors = selinux.selinux_raw_context_to_color(raw) if rc < 0: - print "Unable to get colors for '%s'" % (context) + print("Unable to get colors for '%s'" % (context)) errors += 1 continue colors = colors.rstrip() if colors != expected: - print "For '%s' got\n\t'%s' expected\n\t'%s'" % (context, colors, expected) + print("For '%s' got\n\t'%s' expected\n\t'%s'" % (context, colors, expected)) errors += 1 continue f.close() @@ -38,6 +39,6 @@ s = "s" if errors == 1: s = "" -print "mlscolor-test done with %d error%s" % (errors, s) +print("mlscolor-test done with %d error%s" % (errors, s)) sys.exit(errors) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mcstrans-2.8/share/util/mlstrans-test new/mcstrans-2.9/share/util/mlstrans-test --- old/mcstrans-2.8/share/util/mlstrans-test 2018-05-24 20:21:09.000000000 +0200 +++ new/mcstrans-2.9/share/util/mlstrans-test 2019-03-15 11:32:30.000000000 +0100 @@ -1,31 +1,33 @@ -#!/usr/bin/python -E +#!/usr/bin/python3 -E import sys -import re -from selinux import * +import selinux + + verbose = 0 errors = 0 def untrans(trans, val): global errors, verbose - (rc, raw) = selinux_trans_to_raw_context(trans) + (rc, raw) = selinux.selinux_trans_to_raw_context(trans) if raw != val: - print "untrans: '%s' -> '%s' != '%s' FAILED" % (trans, raw, val) + print("untrans: '%s' -> '%s' != '%s' FAILED" % (trans, raw, val)) errors += 1 else: if verbose: - print "untrans: %s -> %s != %s SUCCESS" % (trans, raw, val) + print("untrans: %s -> %s != %s SUCCESS" % (trans, raw, val)) def trans(raw, val): global errors, verbose - (rc, trans) = selinux_raw_to_trans_context(raw) + (rc, trans) = selinux.selinux_raw_to_trans_context(raw) if trans != val: - print "trans: '%s' -> '%s' != '%s' FAILED" % (raw, trans, val) + print("trans: '%s' -> '%s' != '%s' FAILED" % (raw, trans, val)) errors += 1 else: if verbose: - print "trans: %s -> %s != %s SUCCESS" % (raw, trans, val) + print("trans: %s -> %s != %s SUCCESS" % (raw, trans, val)) + if len(sys.argv) > 1 and sys.argv[1] == "-v": verbose = 1 @@ -38,8 +40,7 @@ if not line.strip(): continue line = line.rstrip('\n') -# print line - if (line.find("==") != -1): + if line.find("==") != -1: t, r = line.split("==") untrans("a:b:c:" + t, "a:b:c:" + r) trans("a:b:c:" + r, "a:b:c:" + t) @@ -51,6 +52,6 @@ s = "s" if errors == 1: s = "" -print "mlstrans-test done with %d error%s" % (errors, s) +print("mlstrans-test done with %d error%s" % (errors, s)) sys.exit(errors) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mcstrans-2.8/src/mcscolor.c new/mcstrans-2.9/src/mcscolor.c --- old/mcstrans-2.8/src/mcscolor.c 2018-05-24 20:21:09.000000000 +0200 +++ new/mcstrans-2.9/src/mcscolor.c 2019-03-15 11:32:30.000000000 +0100 @@ -292,7 +292,7 @@ size_t result_size = (N_COLOR * CHARS_PER_COLOR) + 1; int rc = -1; - if (!color_str || !*color_str) { + if (!color_str || *color_str) { return -1; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mcstrans-2.8/src/mcstrans.c new/mcstrans-2.9/src/mcstrans.c --- old/mcstrans-2.8/src/mcstrans.c 2018-05-24 20:21:09.000000000 +0200 +++ new/mcstrans-2.9/src/mcstrans.c 2019-03-15 11:32:30.000000000 +0100 @@ -708,6 +708,7 @@ err: log_error("allocation error %s", strerror(errno)); + free(affix); return -1; } @@ -1517,8 +1518,10 @@ } else { trans = compute_trans_from_raw(range, domain); if (trans) - if (add_cache(domain, range, trans) < 0) + if (add_cache(domain, range, trans) < 0) { + free(range); return -1; + } } if (lrange && urange) { @@ -1526,12 +1529,15 @@ if (! ltrans) { ltrans = compute_trans_from_raw(lrange, domain); if (ltrans) { - if (add_cache(domain, lrange, ltrans) < 0) + if (add_cache(domain, lrange, ltrans) < 0) { + free(range); return -1; + } } else { ltrans = strdup(lrange); if (! ltrans) { log_error("strdup failed %s", strerror(errno)); + free(range); return -1; } } @@ -1541,25 +1547,36 @@ if (! utrans) { utrans = compute_trans_from_raw(urange, domain); if (utrans) { - if (add_cache(domain, urange, utrans) < 0) + if (add_cache(domain, urange, utrans) < 0) { + free(ltrans); + free(range); return -1; + } } else { utrans = strdup(urange); if (! utrans) { log_error("strdup failed %s", strerror(errno)); - return -1; - } - } + free(ltrans); + free(range); + return -1; + } + } } if (strcmp(ltrans, utrans) == 0) { if (asprintf(&trans, "%s", ltrans) < 0) { log_error("asprintf failed %s", strerror(errno)); + free(utrans); + free(ltrans); + free(range); return -1; } } else { if (asprintf(&trans, "%s-%s", ltrans, utrans) < 0) { log_error("asprintf failed %s", strerror(errno)); + free(utrans); + free(ltrans); + free(range); return -1; } } @@ -1629,13 +1646,17 @@ if (!canonical) { canonical = compute_trans_from_raw(raw, domain); if (canonical && strcmp(canonical, range)) - if (add_cache(domain, raw, canonical) < 0) + if (add_cache(domain, raw, canonical) < 0) { + free(range); return -1; + } } if (canonical) free(canonical); - if (add_cache(domain, raw, range) < 0) + if (add_cache(domain, raw, range) < 0) { + free(range); return -1; + } } else { log_debug("untrans_context unable to compute raw context %s\n", range); } @@ -1650,17 +1671,24 @@ if (!canonical) { canonical = compute_trans_from_raw(lraw, domain); if (canonical) - if (add_cache(domain, lraw, canonical) < 0) + if (add_cache(domain, lraw, canonical) < 0) { + free(lraw); + free(range); return -1; + } } if (canonical) free(canonical); - if (add_cache(domain, lraw, lrange) < 0) + if (add_cache(domain, lraw, lrange) < 0) { + free(lraw); + free(range); return -1; + } } else { lraw = strdup(lrange); if (! lraw) { log_error("strdup failed %s", strerror(errno)); + free(range); return -1; } } @@ -1674,17 +1702,27 @@ if (!canonical) { canonical = compute_trans_from_raw(uraw, domain); if (canonical) - if (add_cache(domain, uraw, canonical) < 0) + if (add_cache(domain, uraw, canonical) < 0) { + free(uraw); + free(lraw); + free(range); return -1; } + } if (canonical) free(canonical); - if (add_cache(domain, uraw, urange) < 0) + if (add_cache(domain, uraw, urange) < 0) { + free(uraw); + free(lraw); + free(range); return -1; + } } else { uraw = strdup(urange); if (! uraw) { log_error("strdup failed %s", strerror(errno)); + free(lraw); + free(range); return -1; } } @@ -1694,11 +1732,17 @@ if (strcmp(lraw, uraw) == 0) { if (asprintf(&raw, "%s", lraw) < 0) { log_error("asprintf failed %s", strerror(errno)); + free(uraw); + free(lraw); + free(range); return -1; } } else { if (asprintf(&raw, "%s-%s", lraw, uraw) < 0) { log_error("asprintf failed %s", strerror(errno)); + free(uraw); + free(lraw); + free(range); return -1; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mcstrans-2.8/src/mcstransd.c new/mcstrans-2.9/src/mcstransd.c --- old/mcstrans-2.8/src/mcstransd.c 2018-05-24 20:21:09.000000000 +0200 +++ new/mcstrans-2.9/src/mcstransd.c 2019-03-15 11:32:30.000000000 +0100 @@ -142,17 +142,8 @@ { int32_t result; char *out = NULL; - char *peercon = NULL; int ret; - ret = getpeercon_raw(fd, &peercon); - if (ret < 0) - return ret; - - /* TODO: Check if MLS clearance (in peercon) dominates the MLS label - * (in the request input). - */ - switch (function) { case SETRANS_INIT: result = 0; @@ -184,7 +175,6 @@ } free(out); - freecon(peercon); return ret; } ++++++ mcstrans-writepid.patch ++++++ --- /var/tmp/diff_new_pack.Yeae7A/_old 2019-03-24 14:55:31.639211405 +0100 +++ /var/tmp/diff_new_pack.Yeae7A/_new 2019-03-24 14:55:31.639211405 +0100 @@ -1,7 +1,7 @@ -Index: mcstrans-2.7/src/mcstransd.c +Index: mcstrans-2.9/src/mcstransd.c =================================================================== ---- mcstrans-2.7.orig/src/mcstransd.c -+++ mcstrans-2.7/src/mcstransd.c +--- mcstrans-2.9.orig/src/mcstransd.c 2019-03-21 08:39:36.020981841 +0100 ++++ mcstrans-2.9/src/mcstransd.c 2019-03-21 08:43:15.456387335 +0100 @@ -14,6 +14,7 @@ #include <sys/socket.h> #include <sys/stat.h> @@ -10,7 +10,12 @@ #include <sys/uio.h> #include <sys/un.h> #include "mcstrans.h" -@@ -62,7 +63,7 @@ static int sockfd = -1; /* socket we are +@@ -59,10 +60,12 @@ extern int raw_color(const security_cont + + static int sockfd = -1; /* socket we are listening on */ + ++static const char *pidfile = "/var/run/mcstransd.pid"; ++ static volatile int restart_daemon = 0; static void cleanup_exit(int ret) __attribute__ ((noreturn)); static void @@ -19,16 +24,7 @@ { finish_context_colors(); finish_context_translations(); -@@ -152,7 +153,7 @@ process_request(int fd, uint32_t functio - /* TODO: Check if MLS clearance (in peercon) dominates the MLS label - * (in the request input). - */ -- -+ - switch (function) { - case SETRANS_INIT: - result = 0; -@@ -231,7 +232,7 @@ service_request(int fd) +@@ -221,7 +224,7 @@ service_request(int fd) data1 = malloc(data1_size); if (!data1) { log_debug("Could not allocate %d bytes\n", data1_size); @@ -37,12 +33,10 @@ } data2 = malloc(data2_size); if (!data2) { -@@ -542,6 +543,30 @@ static void usage(char *program) +@@ -532,6 +535,28 @@ static void usage(char *program) printf("%s [-f] [-h] \n", program); } -+static const char *pidfile = "/var/run/mcstransd.pid"; -+ +static int write_pid_file(void) +{ + int pidfd, len; @@ -68,7 +62,7 @@ int main(int argc, char *argv[]) { -@@ -585,6 +610,8 @@ main(int argc, char *argv[]) +@@ -575,6 +600,8 @@ main(int argc, char *argv[]) } #endif