Bug 1566125

Summary: empty reposdir= in config file lead to dnf crash
Product: [Fedora] Fedora Reporter: Olivier LAHAYE <olivier.lahaye1>
Component: dnfAssignee: Marek Blaha <mblaha>
Status: CLOSED UPSTREAM QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 27CC: dmach, jmracek, mblaha, mhatina, packaging-team-maint, rpm-software-management, vmukhame
Target Milestone: ---Keywords: Triaged
Target Release: ---   
Hardware: All   
OS: All   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2018-05-31 12:53:47 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
dnf config file that triggers the problem none

Description Olivier LAHAYE 2018-04-11 14:55:04 UTC
Created attachment 1420385 [details]
dnf config file that triggers the problem

Description of problem:
reposdir=
with no value leads to a dnf crash.
Version-Release number of selected component (if applicable):


How reproducible:
100%

Steps to Reproduce:
1. save attachnment as /tmp/dnf_test.conf
2. run the following comment
/usr/bin/dnf -c /tmp/dnf_test.conf makecache

Actual results:
Traceback (most recent call last):
  File "usr/bin/dnf", line 58, in <module>
    main.user_main(sys.argv[1:], exit_code=True)
  File "/usr/lib/python3.6/site-packages/dnf/cli/main.py", line 179, in user_main
    errcode = main(args)
  File "/usr/lib/python3.6/site-packages/dnf/cli/main.py", line 64, in main
    return _main(base, args, cli_class, option_parser_class)
  File "/usr/lib/python3.6/site-packages/dnf/cli/main.py", line 95, in _main
    cli.configure(list(map(ucd, args)), option_parser())
  File "/usr/lib/python3.6/site-packages/dnf/cli/cli.py", line 818, in configure
    self._read_conf_file(opts.releasever)
  File "/usr/lib/python3.6/site-packages/dnf/cli/cli.py", line 912, in _read_conf_file
    conf._search_inside_installroot('reposdir')
  File "/usr/lib/python3.6/site-packages/dnf/conf/config.py", line 812, in _search_inside_installroot
    val.lstrip('/'))):
AttributeError: 'NoneType' object has no attribute 'lstrip'


Expected results:
Last metadata expiration check: 0:00:00 ago on Wed Apr 11 14:53:25 2018.
Metadata cache created.

Additional info:

Comment 1 Marek Blaha 2018-04-11 15:28:37 UTC
Fixed in pull request https://github.com/rpm-software-management/dnf/pull/1056

Comment 2 Fedora End Of Life 2018-05-03 08:19:28 UTC
This message is a reminder that Fedora 26 is nearing its end of life.
Approximately 4 (four) weeks from now Fedora will stop maintaining
and issuing updates for Fedora 26. It is Fedora's policy to close all
bug reports from releases that are no longer maintained. At that time
this bug will be closed as EOL if it remains open with a Fedora  'version'
of '26'.

Package Maintainer: If you wish for this bug to remain open because you
plan to fix it in a currently maintained version, simply change the 'version'
to a later Fedora version.

Thank you for reporting this issue and we are sorry that we were not
able to fix it before Fedora 26 is end of life. If you would still like
to see this bug fixed and are able to reproduce it against a later version
of Fedora, you are encouraged  change the 'version' to a later Fedora
version prior this bug is closed as described in the policy above.

Although we aim to fix as many bugs as possible during every release's
lifetime, sometimes those efforts are overtaken by events. Often a
more recent Fedora release includes newer upstream software that fixes
bugs or makes them obsolete.

Comment 3 Olivier LAHAYE 2018-05-03 10:35:12 UTC
Still not fixed in FC-27.
(Commenting line "reposdir=" let dnf works, but if line is in place, it crashes)
See below:

$ cat /tmp/test.conf
[main]
cachedir=/var/cache/dnf
debuglevel=2
logfile=/var/log/yume.log
pkgpolicy=newest
tolerant=1
exactarch=1
retries=20
obsoletes=1
reposdir=
gpgcheck=0
plugins=1

[oscar_fc-27-x86_64]
name=fc-27-x86_64 package repository
baseurl=file:/tftpboot/oscar/fc-27-x86_64

[unstable_fc-27-x86_64]
name=fc-27-x86_64 package repository
baseurl=http://svn.oscar.openclustergroup.org/repos/unstable/fc-27-x86_64

[27_x86_64]
name=x86_64 package repository
baseurl=https://dl.fedoraproject.org/pub/fedora/linux/updates/27/x86_64

[x86_64_os]
name=os package repository
baseurl=https://dl.fedoraproject.org/pub/fedora/linux/releases/27/Everything/x86_64/os




$ sudo dnf -c /tmp/test.conf list all
Traceback (most recent call last):
  File "/bin/dnf", line 58, in <module>
    main.user_main(sys.argv[1:], exit_code=True)
  File "/usr/lib/python3.6/site-packages/dnf/cli/main.py", line 179, in user_main
    errcode = main(args)
  File "/usr/lib/python3.6/site-packages/dnf/cli/main.py", line 64, in main
    return _main(base, args, cli_class, option_parser_class)
  File "/usr/lib/python3.6/site-packages/dnf/cli/main.py", line 95, in _main
    cli.configure(list(map(ucd, args)), option_parser())
  File "/usr/lib/python3.6/site-packages/dnf/cli/cli.py", line 818, in configure
    self._read_conf_file(opts.releasever)
  File "/usr/lib/python3.6/site-packages/dnf/cli/cli.py", line 912, in _read_conf_file
    conf._search_inside_installroot('reposdir')
  File "/usr/lib/python3.6/site-packages/dnf/conf/config.py", line 812, in _search_inside_installroot
    val.lstrip('/'))):
AttributeError: 'NoneType' object has no attribute 'lstrip'




$ rpm -q dnf
dnf-2.7.5-2.fc27.noarch

Comment 4 Jaroslav Mracek 2018-05-31 12:53:47 UTC
The problem is already fixed in upstream and will be released into rawhide and later on in F28 with dnf-3.0