Update to 0.6.3
Update License to BSD-2-Clause to match upstream SPDX identifier Added nesting depth limit to ASN.1 decoder (CVE-2026-30922) Fixed continuation octet limits in OID/RELATIVE-OID decoder (CVE-2026-23490) Resolves: RHEL-170862
This commit is contained in:
parent
d003c0b5e6
commit
e58db0c224
29
.gitignore
vendored
29
.gitignore
vendored
@ -1,26 +1,3 @@
|
|||||||
pyasn1-0.0.9a.tar.gz
|
/pyasn1-*.tar.gz
|
||||||
/pyasn1-0.0.12a.tar.gz
|
/pyasn1-modules-*.tar.gz
|
||||||
/pyasn1-0.1.2.tar.gz
|
/v*.tar.gz
|
||||||
/pyasn1-modules-0.0.2.tar.gz
|
|
||||||
/pyasn1-0.1.6.tar.gz
|
|
||||||
/pyasn1-modules-0.0.4.tar.gz
|
|
||||||
/pyasn1-0.1.7.tar.gz
|
|
||||||
/pyasn1-modules-0.0.5.tar.gz
|
|
||||||
/pyasn1-0.1.8.tar.gz
|
|
||||||
/pyasn1-modules-0.0.6.tar.gz
|
|
||||||
/pyasn1-modules-0.0.8.tar.gz
|
|
||||||
/pyasn1-0.1.9.tar.gz
|
|
||||||
/v0.2.1.tar.gz
|
|
||||||
/v0.2.3.tar.gz
|
|
||||||
/v0.3.2.tar.gz
|
|
||||||
/v0.0.11.tar.gz
|
|
||||||
/v0.3.4.tar.gz
|
|
||||||
/v0.1.2.tar.gz
|
|
||||||
/v0.1.5.tar.gz
|
|
||||||
/v0.3.7.tar.gz
|
|
||||||
/v0.4.4.tar.gz
|
|
||||||
/v0.2.2.tar.gz
|
|
||||||
/v0.2.6.tar.gz
|
|
||||||
/v0.4.6.tar.gz
|
|
||||||
/v0.4.8.tar.gz
|
|
||||||
/v0.2.8.tar.gz
|
|
||||||
|
|||||||
@ -1,122 +0,0 @@
|
|||||||
From eb5017870dd6c96c1994a1b94150237e68edb179 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Florence Blanc-Renaud <flo@redhat.com>
|
|
||||||
Date: Thu, 12 Feb 2026 23:18:56 +0100
|
|
||||||
Subject: [PATCH] Backport commit be353d7
|
|
||||||
|
|
||||||
Add limit of 20 continuation octets per OID arc to prevent a potential memory
|
|
||||||
exhaustion from excessive continuation bytes input.
|
|
||||||
---
|
|
||||||
pyasn1/codec/ber/decoder.py | 11 ++++++
|
|
||||||
tests/codec/ber/test_decoder.py | 66 +++++++++++++++++++++++++++++++++
|
|
||||||
2 files changed, 77 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/pyasn1/codec/ber/decoder.py b/pyasn1/codec/ber/decoder.py
|
|
||||||
index 5ff485fbeb0cc7d761dd398134cf39a6258a109e..adfd7501a52421748b3143935a0ec95bdd1d42e6 100644
|
|
||||||
--- a/pyasn1/codec/ber/decoder.py
|
|
||||||
+++ b/pyasn1/codec/ber/decoder.py
|
|
||||||
@@ -22,6 +22,10 @@ LOG = debug.registerLoggee(__name__, flags=debug.DEBUG_DECODER)
|
|
||||||
|
|
||||||
noValue = base.noValue
|
|
||||||
|
|
||||||
+# Maximum number of continuation octets (high-bit set) allowed per OID arc.
|
|
||||||
+# 20 octets allows up to 140-bit integers, supporting UUID-based OIDs
|
|
||||||
+MAX_OID_ARC_CONTINUATION_OCTETS = 20
|
|
||||||
+
|
|
||||||
|
|
||||||
class AbstractDecoder(object):
|
|
||||||
protoComponent = None
|
|
||||||
@@ -342,7 +346,14 @@ class ObjectIdentifierDecoder(AbstractSimpleDecoder):
|
|
||||||
# Construct subid from a number of octets
|
|
||||||
nextSubId = subId
|
|
||||||
subId = 0
|
|
||||||
+ continuationOctetCount = 0
|
|
||||||
while nextSubId >= 128:
|
|
||||||
+ continuationOctetCount += 1
|
|
||||||
+ if continuationOctetCount > MAX_OID_ARC_CONTINUATION_OCTETS:
|
|
||||||
+ raise error.PyAsn1Error(
|
|
||||||
+ 'OID arc exceeds maximum continuation octets limit (%d) '
|
|
||||||
+ 'at position %d' % (MAX_OID_ARC_CONTINUATION_OCTETS, index)
|
|
||||||
+ )
|
|
||||||
subId = (subId << 7) + (nextSubId & 0x7F)
|
|
||||||
if index >= substrateLen:
|
|
||||||
raise error.SubstrateUnderrunError(
|
|
||||||
diff --git a/tests/codec/ber/test_decoder.py b/tests/codec/ber/test_decoder.py
|
|
||||||
index e3b74dfd203923157cb6a26215e9d03c971a5b41..f9bf381b1da339611d974673420248e1a1014421 100644
|
|
||||||
--- a/tests/codec/ber/test_decoder.py
|
|
||||||
+++ b/tests/codec/ber/test_decoder.py
|
|
||||||
@@ -407,6 +407,72 @@ class ObjectIdentifierDecoderTestCase(BaseTestCase):
|
|
||||||
ints2octs((0x06, 0x13, 0x88, 0x37, 0x83, 0xC6, 0xDF, 0xD4, 0xCC, 0xB3, 0xFF, 0xFF, 0xFE, 0xF0, 0xB8, 0xD6, 0xB8, 0xCB, 0xE2, 0xB6, 0x47))
|
|
||||||
) == ((2, 999, 18446744073709551535184467440737095), null)
|
|
||||||
|
|
||||||
+ def testExcessiveContinuationOctets(self):
|
|
||||||
+ """Test that OID arcs with excessive continuation octets are rejected."""
|
|
||||||
+ # Create a payload with 25 continuation octets (exceeds 20 limit)
|
|
||||||
+ # 0x81 bytes are continuation octets, 0x01 terminates
|
|
||||||
+ malicious_payload = bytes([0x06, 26]) + bytes([0x81] * 25) + bytes([0x01])
|
|
||||||
+ try:
|
|
||||||
+ decoder.decode(malicious_payload)
|
|
||||||
+ except PyAsn1Error:
|
|
||||||
+ pass
|
|
||||||
+ else:
|
|
||||||
+ assert 0, 'Excessive continuation octets tolerated'
|
|
||||||
+
|
|
||||||
+ def testMaxAllowedContinuationOctets(self):
|
|
||||||
+ """Test that OID arcs at the maximum continuation octets limit work."""
|
|
||||||
+ # Create a payload with exactly 20 continuation octets (at limit)
|
|
||||||
+ # This should succeed
|
|
||||||
+ payload = bytes([0x06, 21]) + bytes([0x81] * 20) + bytes([0x01])
|
|
||||||
+ try:
|
|
||||||
+ decoder.decode(payload)
|
|
||||||
+ except PyAsn1Error:
|
|
||||||
+ assert 0, 'Valid OID with 20 continuation octets rejected'
|
|
||||||
+
|
|
||||||
+ def testOneOverContinuationLimit(self):
|
|
||||||
+ """Test boundary: 21 continuation octets (one over limit) is rejected."""
|
|
||||||
+ payload = bytes([0x06, 22]) + bytes([0x81] * 21) + bytes([0x01])
|
|
||||||
+ try:
|
|
||||||
+ decoder.decode(payload)
|
|
||||||
+ except PyAsn1Error:
|
|
||||||
+ pass
|
|
||||||
+ else:
|
|
||||||
+ assert 0, '21 continuation octets tolerated (should be rejected)'
|
|
||||||
+
|
|
||||||
+ def testExcessiveContinuationInSecondArc(self):
|
|
||||||
+ """Test that limit applies to subsequent arcs, not just the first."""
|
|
||||||
+ # First arc: valid simple byte (0x55 = 85, decodes to arc 2.5)
|
|
||||||
+ # Second arc: excessive continuation octets
|
|
||||||
+ payload = bytes([0x06, 27]) + bytes([0x55]) + bytes([0x81] * 25) + bytes([0x01])
|
|
||||||
+ try:
|
|
||||||
+ decoder.decode(payload)
|
|
||||||
+ except PyAsn1Error:
|
|
||||||
+ pass
|
|
||||||
+ else:
|
|
||||||
+ assert 0, 'Excessive continuation in second arc tolerated'
|
|
||||||
+
|
|
||||||
+ def testMultipleArcsAtLimit(self):
|
|
||||||
+ """Test multiple arcs each at the continuation limit work correctly."""
|
|
||||||
+ # Two arcs, each with 20 continuation octets (both at limit)
|
|
||||||
+ arc1 = bytes([0x81] * 20) + bytes([0x01]) # 21 bytes
|
|
||||||
+ arc2 = bytes([0x81] * 20) + bytes([0x01]) # 21 bytes
|
|
||||||
+ payload = bytes([0x06, 42]) + arc1 + arc2
|
|
||||||
+ try:
|
|
||||||
+ decoder.decode(payload)
|
|
||||||
+ except PyAsn1Error:
|
|
||||||
+ assert 0, 'Multiple valid arcs at limit rejected'
|
|
||||||
+
|
|
||||||
+ def testExcessiveContinuationWithMaxBytes(self):
|
|
||||||
+ """Test with 0xFF continuation bytes (maximum value, not just 0x81)."""
|
|
||||||
+ # 0xFF bytes are also continuation octets (high bit set)
|
|
||||||
+ malicious_payload = bytes([0x06, 26]) + bytes([0xFF] * 25) + bytes([0x01])
|
|
||||||
+ try:
|
|
||||||
+ decoder.decode(malicious_payload)
|
|
||||||
+ except PyAsn1Error:
|
|
||||||
+ pass
|
|
||||||
+ else:
|
|
||||||
+ assert 0, 'Excessive 0xFF continuation octets tolerated'
|
|
||||||
+
|
|
||||||
|
|
||||||
class RealDecoderTestCase(BaseTestCase):
|
|
||||||
def testChar(self):
|
|
||||||
--
|
|
||||||
2.52.0
|
|
||||||
|
|
||||||
158
0001-Revert-Package-pyasn1-with-pyproject.toml-90.patch
Normal file
158
0001-Revert-Package-pyasn1-with-pyproject.toml-90.patch
Normal file
@ -0,0 +1,158 @@
|
|||||||
|
From 66bcd08ebf586742ca3dd857ec29f490eac2b242 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Simon Pichugin <spichugi@redhat.com>
|
||||||
|
Date: Mon, 27 Apr 2026 20:34:28 -0700
|
||||||
|
Subject: [PATCH] Revert "Package pyasn1 with pyproject.toml (#90)"
|
||||||
|
|
||||||
|
This reverts commit d2015ad04336944511ce7643914e8daf432ef2f9.
|
||||||
|
|
||||||
|
It's a modified patch because the release tarball already contains a setup.cfg
|
||||||
|
with [egg_info] content; this patch prepends the full [metadata] and [options]
|
||||||
|
sections so that EL9's older setuptools can read the package name/version correctly
|
||||||
|
and produce a properly-named wheel instead of UNKNOWN-0.0.0.
|
||||||
|
---
|
||||||
|
|
||||||
|
--- a/pyproject.toml
|
||||||
|
+++ b/pyproject.toml
|
||||||
|
@@ -4,68 +4,3 @@
|
||||||
|
]
|
||||||
|
build-backend = "setuptools.build_meta"
|
||||||
|
|
||||||
|
-[project]
|
||||||
|
-name = "pyasn1"
|
||||||
|
-license.text = "BSD-2-Clause" # Replace with 'license' once Python 3.8 is dropped
|
||||||
|
-description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)"
|
||||||
|
-readme = "README.md"
|
||||||
|
-authors = [
|
||||||
|
- {name = "Ilya Etingof", email = "etingof@gmail.com"}
|
||||||
|
-]
|
||||||
|
-maintainers = [
|
||||||
|
- {name = "pyasn1 maintenance organization"},
|
||||||
|
- {name = "Christian Heimes", email = "christian@python.org"}
|
||||||
|
-]
|
||||||
|
-requires-python = ">=3.8"
|
||||||
|
-classifiers = [
|
||||||
|
- "Development Status :: 5 - Production/Stable",
|
||||||
|
- "Environment :: Console",
|
||||||
|
- "Intended Audience :: Developers",
|
||||||
|
- "Intended Audience :: Education",
|
||||||
|
- "Intended Audience :: Information Technology",
|
||||||
|
- "Intended Audience :: System Administrators",
|
||||||
|
- "Intended Audience :: Telecommunications Industry",
|
||||||
|
- "Natural Language :: English",
|
||||||
|
- "Operating System :: OS Independent",
|
||||||
|
- "Programming Language :: Python :: 3",
|
||||||
|
- "Programming Language :: Python :: 3.8",
|
||||||
|
- "Programming Language :: Python :: 3.9",
|
||||||
|
- "Programming Language :: Python :: 3.10",
|
||||||
|
- "Programming Language :: Python :: 3.11",
|
||||||
|
- "Programming Language :: Python :: 3.12",
|
||||||
|
- "Programming Language :: Python :: 3.13",
|
||||||
|
- "Programming Language :: Python :: 3.14",
|
||||||
|
- "Programming Language :: Python :: Implementation :: CPython",
|
||||||
|
- "Programming Language :: Python :: Implementation :: PyPy",
|
||||||
|
- "Topic :: Communications",
|
||||||
|
- "Topic :: Software Development :: Libraries :: Python Modules"
|
||||||
|
-]
|
||||||
|
-dynamic = ["version"]
|
||||||
|
-
|
||||||
|
-[project.urls]
|
||||||
|
-"Homepage" = "https://github.com/pyasn1/pyasn1"
|
||||||
|
-"Documentation" = "https://pyasn1.readthedocs.io"
|
||||||
|
-"Source" = "https://github.com/pyasn1/pyasn1"
|
||||||
|
-"Issues" = "https://github.com/pyasn1/pyasn1/issues"
|
||||||
|
-"Changelog" = "https://pyasn1.readthedocs.io/en/latest/changelog.html"
|
||||||
|
-
|
||||||
|
-[tool.setuptools]
|
||||||
|
-zip-safe = true
|
||||||
|
-platforms = ["any"]
|
||||||
|
-# Additional files to include in the distribution (replaces MANIFEST.in functionality)
|
||||||
|
-include-package-data = true
|
||||||
|
-license-files = ["LICENSE.rst"] # Replace with 'project.license-files' once Python 3.8 is dropped
|
||||||
|
-
|
||||||
|
-[tool.setuptools.dynamic]
|
||||||
|
-version = {attr = "pyasn1.__version__"}
|
||||||
|
-
|
||||||
|
-[tool.setuptools.packages.find]
|
||||||
|
-include = [
|
||||||
|
- "pyasn1*"
|
||||||
|
-]
|
||||||
|
-
|
||||||
|
-[tool.setuptools.package-data]
|
||||||
|
-"*" = [
|
||||||
|
- "*.rst",
|
||||||
|
- "*.md"
|
||||||
|
-]
|
||||||
|
--- a/setup.cfg
|
||||||
|
+++ b/setup.cfg
|
||||||
|
@@ -0,0 +1,56 @@
|
||||||
|
+[metadata]
|
||||||
|
+name = pyasn1
|
||||||
|
+version = attr: pyasn1.__version__
|
||||||
|
+description = Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)
|
||||||
|
+long_description = file: README.md
|
||||||
|
+long_description_content_type = text/markdown
|
||||||
|
+license = BSD-2-Clause
|
||||||
|
+license_files = LICENSE.rst
|
||||||
|
+url = https://github.com/pyasn1/pyasn1
|
||||||
|
+author = Ilya Etingof
|
||||||
|
+author_email = etingof@gmail.com
|
||||||
|
+maintainer = pyasn1 maintenance organization
|
||||||
|
+maintainer_email = Christian Heimes <christian@python.org>
|
||||||
|
+project_urls =
|
||||||
|
+ Documentation=https://pyasn1.readthedocs.io
|
||||||
|
+ Source=https://github.com/pyasn1/pyasn1
|
||||||
|
+ Issues=https://github.com/pyasn1/pyasn1/issues
|
||||||
|
+ Changelog=https://pyasn1.readthedocs.io/en/latest/changelog.html
|
||||||
|
+platforms = any
|
||||||
|
+classifiers =
|
||||||
|
+ Development Status :: 5 - Production/Stable
|
||||||
|
+ Environment :: Console
|
||||||
|
+ Intended Audience :: Developers
|
||||||
|
+ Intended Audience :: Education
|
||||||
|
+ Intended Audience :: Information Technology
|
||||||
|
+ Intended Audience :: System Administrators
|
||||||
|
+ Intended Audience :: Telecommunications Industry
|
||||||
|
+ License :: OSI Approved :: BSD License
|
||||||
|
+ Natural Language :: English
|
||||||
|
+ Operating System :: OS Independent
|
||||||
|
+ Programming Language :: Python :: 3
|
||||||
|
+ Programming Language :: Python :: 3.8
|
||||||
|
+ Programming Language :: Python :: 3.9
|
||||||
|
+ Programming Language :: Python :: 3.10
|
||||||
|
+ Programming Language :: Python :: 3.11
|
||||||
|
+ Programming Language :: Python :: 3.12
|
||||||
|
+ Programming Language :: Python :: 3.13
|
||||||
|
+ Programming Language :: Python :: Implementation :: CPython
|
||||||
|
+ Programming Language :: Python :: Implementation :: PyPy
|
||||||
|
+ Topic :: Communications
|
||||||
|
+ Topic :: Software Development :: Libraries :: Python Modules
|
||||||
|
+
|
||||||
|
+[options]
|
||||||
|
+python_requires = >=3.8
|
||||||
|
+zip_safe = True
|
||||||
|
+setup_requires = setuptools
|
||||||
|
+packages =
|
||||||
|
+ pyasn1
|
||||||
|
+ pyasn1.type
|
||||||
|
+ pyasn1.compat
|
||||||
|
+ pyasn1.codec
|
||||||
|
+ pyasn1.codec.ber
|
||||||
|
+ pyasn1.codec.cer
|
||||||
|
+ pyasn1.codec.der
|
||||||
|
+ pyasn1.codec.native
|
||||||
|
+
|
||||||
|
--- a/setup.py
|
||||||
|
+++ b/setup.py
|
||||||
|
@@ -0,0 +1,10 @@
|
||||||
|
+#!/usr/bin/env python
|
||||||
|
+#
|
||||||
|
+# This file is part of pyasn1 software.
|
||||||
|
+#
|
||||||
|
+# Copyright (c) 2005-2020, Ilya Etingof <etingof@gmail.com>
|
||||||
|
+# License: https://pyasn1.readthedocs.io/en/latest/license.html
|
||||||
|
+#
|
||||||
|
+from setuptools import setup
|
||||||
|
+
|
||||||
|
+setup()
|
||||||
|
--
|
||||||
|
2.52.0
|
||||||
@ -1,18 +1,18 @@
|
|||||||
%global module pyasn1
|
%global module pyasn1
|
||||||
%global modules_version 0.2.8
|
%global modules_version 0.4.2
|
||||||
|
|
||||||
Name: python-pyasn1
|
Name: python-pyasn1
|
||||||
Version: 0.4.8
|
Version: 0.6.3
|
||||||
Release: 7%{?dist}
|
Release: 1%{?dist}
|
||||||
Summary: ASN.1 tools for Python
|
Summary: ASN.1 tools for Python
|
||||||
License: BSD
|
License: BSD-2-Clause
|
||||||
Source0: https://github.com/etingof/pyasn1/archive/v%{version}.tar.gz
|
Source0: https://github.com/pyasn1/pyasn1/archive/v%{version}.tar.gz
|
||||||
Source1: https://github.com/etingof/pyasn1-modules/archive/v%{modules_version}.tar.gz
|
Source1: https://github.com/pyasn1/pyasn1-modules/archive/v%{modules_version}.tar.gz
|
||||||
URL: http://pyasn1.sourceforge.net/
|
URL: https://github.com/pyasn1/pyasn1
|
||||||
BuildArch: noarch
|
BuildArch: noarch
|
||||||
|
# Revert upstream migration to pyproject.toml [project] metadata (PR#90);
|
||||||
Patch1: 0001-Backport-commit-be353d7.patch
|
# EL9 ships setuptools too old to handle it, producing an UNKNOWN-0.0.0 wheel.
|
||||||
|
Patch0: 0001-Revert-Package-pyasn1-with-pyproject.toml-90.patch
|
||||||
|
|
||||||
%description
|
%description
|
||||||
This is an implementation of ASN.1 types and codecs in the Python programming
|
This is an implementation of ASN.1 types and codecs in the Python programming
|
||||||
@ -58,7 +58,7 @@ pushd ../pyasn1-modules-%{modules_version}
|
|||||||
popd
|
popd
|
||||||
|
|
||||||
pushd docs
|
pushd docs
|
||||||
PYTHONPATH=%{buildroot}%{python3_sitelib} make SPHINXBUILD=sphinx-build-3 html
|
PYTHONPATH=.. make SPHINXBUILD=sphinx-build-3 html
|
||||||
popd
|
popd
|
||||||
|
|
||||||
|
|
||||||
@ -71,7 +71,8 @@ popd
|
|||||||
|
|
||||||
|
|
||||||
%check
|
%check
|
||||||
PYTHONPATH=%{buildroot}%{python3_sitelib} %{__python3} setup.py test
|
cd %{_builddir}/%{module}-%{version}
|
||||||
|
PYTHONPATH=%{buildroot}%{python3_sitelib} %{__python3} -m tests
|
||||||
|
|
||||||
|
|
||||||
%files -n python3-pyasn1
|
%files -n python3-pyasn1
|
||||||
@ -89,6 +90,13 @@ PYTHONPATH=%{buildroot}%{python3_sitelib} %{__python3} setup.py test
|
|||||||
%doc docs/build/html/*
|
%doc docs/build/html/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Apr 24 2026 Simon Pichugin <spichugi@redhat.com> - 0.6.3-1
|
||||||
|
- Update to 0.6.3
|
||||||
|
- Update License to BSD-2-Clause to match upstream SPDX identifier
|
||||||
|
- Added nesting depth limit to ASN.1 decoder (CVE-2026-30922)
|
||||||
|
- Fixed continuation octet limits in OID/RELATIVE-OID decoder (CVE-2026-23490)
|
||||||
|
- Resolves: RHEL-170862
|
||||||
|
|
||||||
* Fri Feb 13 2026 Florence Blanc-Renaud <flo@redhat.com> - 0.4.8-7
|
* Fri Feb 13 2026 Florence Blanc-Renaud <flo@redhat.com> - 0.4.8-7
|
||||||
- Resolves: RHEL-148154
|
- Resolves: RHEL-148154
|
||||||
|
|
||||||
|
|||||||
4
sources
4
sources
@ -1,2 +1,2 @@
|
|||||||
SHA512 (v0.4.8.tar.gz) = 3bd2f51c8f9f1f3ba48464622370bb7e7c9eda63d9cd2ef2fd6b6bbcd916a439c053febab2535f5fb6120d0ce87d7aa3c9c8756809db73502b5cf7c7a2048a6d
|
SHA512 (v0.6.3.tar.gz) = c58962b3f11f486da3e73c09dbe2aff7500879b29c4a7be4295878e4edbcaaa2680d608720ad5af86a2457de7da50471ab7a9e925f717db5c467553fc552e6d6
|
||||||
SHA512 (v0.2.8.tar.gz) = 7701f239c13e65d5a0979b0d3ac4a408e9493dfdbb2277d864a6c204ea8dc569cddbbaba2e9a601c86336a02af660a6dfeb734f70c6f73631443219b2e770047
|
SHA512 (v0.4.2.tar.gz) = 7c4feab23a8c5ab72549387586894d1d53a3ad8b9d12cc5774b1d1f5192873f87da2e3525059fdda5b5884a52908ce79df274e3b75ee1f42af32e83ceb3f9167
|
||||||
|
|||||||
@ -13,15 +13,15 @@
|
|||||||
required_packages:
|
required_packages:
|
||||||
- python3-pyasn1
|
- python3-pyasn1
|
||||||
- python3-pyasn1-modules
|
- python3-pyasn1-modules
|
||||||
- python3-pytest
|
|
||||||
tests:
|
tests:
|
||||||
- unittests-pyasn1:
|
- unittests-pyasn1:
|
||||||
dir: "source/pyasn1-0.4.8"
|
# Must match the unpacked tarball directory name from this SRPM (see sources / spec Version).
|
||||||
|
dir: "source/pyasn1-0.6.3"
|
||||||
run: >-
|
run: >-
|
||||||
rm -rf pyasn1* &&
|
rm -rf pyasn1 &&
|
||||||
pytest-3 tests/
|
python3 -m tests
|
||||||
- unittests-pyasn1-modules:
|
- unittests-pyasn1-modules:
|
||||||
dir: "source/pyasn1-modules-0.2.8"
|
dir: "source/pyasn1-modules-0.4.2"
|
||||||
run: >-
|
run: >-
|
||||||
rm -rf pyasn1_modules* &&
|
rm -rf pyasn1_modules &&
|
||||||
pytest-3 tests/
|
python3 -m tests
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user