From c46c7617fe8f01ebdf0474ae9096297e270aa236 Mon Sep 17 00:00:00 2001 From: Daniel Garcia Moreno Date: Fri, 26 May 2023 08:25:21 +0200 Subject: [PATCH] SpecCheck: Check for NULL char in all lines Fix https://github.com/rpm-software-management/rpmlint/issues/1067 --- rpmlint/checks/SpecCheck.py | 8 ++++++++ test/spec/null-char-first.spec | Bin 0 -> 1300 bytes test/spec/null-char-last.spec | Bin 0 -> 1300 bytes test/test_speccheck.py | 12 ++++++++++++ 4 files changed, 20 insertions(+) create mode 100644 test/spec/null-char-first.spec create mode 100644 test/spec/null-char-last.spec diff --git a/rpmlint/checks/SpecCheck.py b/rpmlint/checks/SpecCheck.py index 4929d30d..48083194 100644 --- a/rpmlint/checks/SpecCheck.py +++ b/rpmlint/checks/SpecCheck.py @@ -670,6 +670,8 @@ class SpecCheck(AbstractCheck): self._checkline_package_obsoletes(line) self._checkline_package_conflicts(line) + self._checkline_forbidden_controlchars(line) + def _checkline_changelog(self, line): if self.current_section == 'changelog': deptoken = Pkg.has_forbidden_controlchars(line) @@ -762,3 +764,9 @@ class SpecCheck(AbstractCheck): if python_sitelib_glob_regex.match(line): self.output.add_info('W', self.pkg, 'python-sitelib-glob-in-files', line[:-1]) + + def _checkline_forbidden_controlchars(self, line): + """Look for controlchar in any line""" + # https://github.com/rpm-software-management/rpmlint/issues/1067 + if Pkg.has_forbidden_controlchars(line): + self.output.add_info('W', self.pkg, 'forbidden-controlchar-found') diff --git a/test/spec/null-char-first.spec b/test/spec/null-char-first.spec new file mode 100644 index 0000000000000000000000000000000000000000..89e3d49d3ec092e13854bce1997dfb6486ee7975 GIT binary patch literal 1300 zcmaKsU2mH(6oz;0UvZ=ksg-I-Xg;KByJ$P9o0KI{((D!)FkqF~$e2oN%75R15Mm|G zxWL%Yd%o;rzK}WF@_RTw>w-s58INAcAFfNGWDf^q#dFTeqkKTt)ppDD-(E9Ul0(Kd zC*)bHs^|g0M#el5lE-8wA}%dA&&%1HPd2NWr3T21DegT_7u#G&(Tq4)bfiULu;odA2>?qmE+J0AqF0vk!#$CT z=_sRR6@GFB8U%?^^tNf@{fpi-iRL1Vg|3^r&|53FckhxV2F{pFd9G6O4|ZgX6951J literal 0 HcmV?d00001 diff --git a/test/spec/null-char-last.spec b/test/spec/null-char-last.spec new file mode 100644 index 0000000000000000000000000000000000000000..d27b59e613c86ed63947e7eba05bb5b56f1b59d1 GIT binary patch literal 1300 zcmaKsU2mH(6oz;0UvZ=ksg-I-Xg;KByJ$P9o0KI{((D!)FkqF~$e2oN%75R15Mm|G zxWL%Yd%o;r=4{LF;rOfz9zA6|dL@6jE`^dk9FP^yIV+Fy0a;huEz^H{&0I+i8P}YU zXRWHD2LKxx^F&AA^PvF>w zlM^_x;q(MfJNQ_MJYFefI_~TOvn{a9toFK{qR#GZf0i|V>ir?sRHG4fuF)V6aZuGj zvUGvzTYI(7@^Yw#V0?tm=9QsvzA_D7*Q5cmfECrUd|uRZhURi*Yq zAw63jR)!`b=S^Fj72uVPoJnP{E$Kxw;$YE{7KOohA|;Q3awxq-DKBK&1828I24k95-!}6TyEl{1n*VXcO@VNOk`w^@bix(6`_=k~~adXUN svpoqjMqkt0riu42debDDi!c_tZt6mBt=!(dOO_ZoV>0ErO34@U4_nWS6951J literal 0 HcmV?d00001 diff --git a/test/test_speccheck.py b/test/test_speccheck.py index a1a56155..8a24512b 100644 --- a/test/test_speccheck.py +++ b/test/test_speccheck.py @@ -1156,3 +1156,15 @@ def test_python_sitelib(package, speccheck): test.check_spec(pkg) out = output.print_results(output.results) assert 'W: python-sitelib-glob-in-files' not in out + + +@pytest.mark.parametrize('package', [ + 'spec/null-char-last', + 'spec/null-char-first', +]) +def test_null_char(package, speccheck): + output, test = speccheck + pkg = get_tested_spec_package(package) + test.check_spec(pkg) + out = output.print_results(output.results) + assert 'forbidden-controlchar-found' in out