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
  


Reply via email to