policycoreutils/sepolicy: Check get_rpm_nvr_list() return value

get_rpm_nvr_list can fail to get the version of selinux-policy rpm
package, which leads to error during spec file creation (attempt to
invoke __getitem__ of "None" object).

This patch sets the policy number to "0.0.0" in case rpm failed to
get it. This change should be safe because it affects only an example
of spec file.

Variable "POLICYCOREUTILSVER" was removed (unused).

fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1321499

Failed to retrieve rpm info for selinux-policy
Traceback (most recent call last):
  File "/bin/selinux-polgengui", line 360, in forward
    self.generate_policy()
  File "/bin/selinux-polgengui", line 506, in generate_policy
    self.info(my_policy.generate(outputdir))
  File "/usr/lib64/python2.7/site-packages/sepolicy/generate.py", line 1382, in generate
    out += "%s # %s\n" % (self.write_spec(out_dir), _("Spec file"))
  File "/usr/lib64/python2.7/site-packages/sepolicy/generate.py", line 1228, in write_spec
    fd.write(self.generate_spec())
  File "/usr/lib64/python2.7/site-packages/sepolicy/generate.py", line 1190, in generate_spec
    selinux_policyver = get_rpm_nvr_list("selinux-policy")[1]
  TypeError: 'NoneType' object has no attribute '__getitem__'

Signed-off-by: Vit Mojzis <vmojzis@redhat.com>
This commit is contained in:
Vit Mojzis 2016-08-04 14:50:53 +02:00 committed by James Carter
parent 2e60a2c80e
commit 671f83b42b

View File

@ -1189,8 +1189,12 @@ allow %s_t %s_t:%s_socket name_%s;
def generate_spec(self): def generate_spec(self):
newspec = "" newspec = ""
selinux_policyver = get_rpm_nvr_list("selinux-policy")[1] selinux_policynvr = get_rpm_nvr_list("selinux-policy")
POLICYCOREUTILSVER = get_rpm_nvr_list("checkpolicy")[1]
if selinux_policynvr is None:
selinux_policyver = "0.0.0"
else:
selinux_policyver = selinux_policynvr[1]
newspec += spec.header_comment_section newspec += spec.header_comment_section
if self.type in APPLICATIONS: if self.type in APPLICATIONS: