Blame SOURCES/0041-osutils-don-t-segfault-on-empty-files.patch

99c779
From a4d32450c3565f5dba9e027283ea3dd40a21138e Mon Sep 17 00:00:00 2001
99c779
From: Denis 'GNUtoo' Carikli <GNUtoo@no-log.org>
99c779
Date: Mon, 9 Jan 2017 21:50:19 +0100
99c779
Subject: [PATCH 41/43] osutils: don't segfault on empty files.
99c779
99c779
In the "string operating_system()" method, the GNU/Linux
99c779
distribution is detected by trying to open various files
99c779
like /etc/lsb_release.
99c779
99c779
Without that patch, If one of such file is present and empty,
99c779
lshw -dump will produce a segmentation fault.
99c779
99c779
On the Parabola GNU/Linux distribution (An arch derivative),
99c779
/etc/arch-release is empty.
99c779
99c779
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@no-log.org>
99c779
---
99c779
 src/core/osutils.cc | 42 +++++++++++++++++++++---------------------
99c779
 1 file changed, 21 insertions(+), 21 deletions(-)
99c779
99c779
diff --git a/src/core/osutils.cc b/src/core/osutils.cc
99c779
index cc03dc4..e93b79e 100644
99c779
--- a/src/core/osutils.cc
99c779
+++ b/src/core/osutils.cc
99c779
@@ -773,47 +773,47 @@ string operating_system()
99c779
   struct utsname u;
99c779
   string os = "";
99c779
 
99c779
-  if(loadfile("/etc/lsb-release", osinfo))
99c779
+  if(loadfile("/etc/lsb-release", osinfo) && (osinfo.size() > 0))
99c779
     os = osinfo[0];
99c779
-  else if(loadfile("/etc/lsb_release", osinfo))
99c779
+  else if(loadfile("/etc/lsb_release", osinfo) && (osinfo.size() > 0))
99c779
     os = osinfo[0];
99c779
-  else if(loadfile("/etc/system-release", osinfo))
99c779
+  else if(loadfile("/etc/system-release", osinfo) && (osinfo.size() > 0))
99c779
     os = osinfo[0];
99c779
-  else if(loadfile("/etc/release", osinfo))
99c779
+  else if(loadfile("/etc/release", osinfo) && (osinfo.size() > 0))
99c779
     os = osinfo[0];
99c779
-  else if(loadfile("/etc/arch-release", osinfo))
99c779
+  else if(loadfile("/etc/arch-release", osinfo) && (osinfo.size() > 0))
99c779
     os = osinfo[0];
99c779
-  else if(loadfile("/etc/arklinux-release", osinfo))
99c779
+  else if(loadfile("/etc/arklinux-release", osinfo) && (osinfo.size() > 0))
99c779
     os = osinfo[0];
99c779
-  else if(loadfile("/etc/aurox-release", osinfo))
99c779
+  else if(loadfile("/etc/aurox-release", osinfo) && (osinfo.size() > 0))
99c779
     os = osinfo[0];
99c779
-  else if(loadfile("/etc/conectiva-release", osinfo))
99c779
+  else if(loadfile("/etc/conectiva-release", osinfo) && (osinfo.size() > 0))
99c779
     os = osinfo[0];
99c779
-  else if(loadfile("/etc/debian_version", osinfo))
99c779
+  else if(loadfile("/etc/debian_version", osinfo) && (osinfo.size() > 0))
99c779
     os = osinfo[0];
99c779
-  else if(loadfile("/etc/fedora-release", osinfo))
99c779
+  else if(loadfile("/etc/fedora-release", osinfo) && (osinfo.size() > 0))
99c779
     os = osinfo[0];
99c779
-  else if(loadfile("/etc/gentoo-release", osinfo))
99c779
+  else if(loadfile("/etc/gentoo-release", osinfo) && (osinfo.size() > 0))
99c779
     os = osinfo[0];
99c779
-  else if(loadfile("/etc/linuxppc-release", osinfo))
99c779
+  else if(loadfile("/etc/linuxppc-release", osinfo) && (osinfo.size() > 0))
99c779
     os = osinfo[0];
99c779
-  else if(loadfile("/etc/mandrake-release", osinfo))
99c779
+  else if(loadfile("/etc/mandrake-release", osinfo) && (osinfo.size() > 0))
99c779
     os = osinfo[0];
99c779
-  else if(loadfile("/etc/mandriva-release", osinfo))
99c779
+  else if(loadfile("/etc/mandriva-release", osinfo) && (osinfo.size() > 0))
99c779
     os = osinfo[0];
99c779
-  else if(loadfile("/etc/novell-release", osinfo))
99c779
+  else if(loadfile("/etc/novell-release", osinfo) && (osinfo.size() > 0))
99c779
     os = osinfo[0];
99c779
-  else if(loadfile("/etc/pld-release", osinfo))
99c779
+  else if(loadfile("/etc/pld-release", osinfo) && (osinfo.size() > 0))
99c779
     os = osinfo[0];
99c779
-  else if(loadfile("/etc/redhat-release", osinfo))
99c779
+  else if(loadfile("/etc/redhat-release", osinfo) && (osinfo.size() > 0))
99c779
     os = osinfo[0];
99c779
-  else if(loadfile("/etc/slackware-version", osinfo))
99c779
+  else if(loadfile("/etc/slackware-version", osinfo) && (osinfo.size() > 0))
99c779
     os = osinfo[0];
99c779
-  else if(loadfile("/etc/sun-release", osinfo))
99c779
+  else if(loadfile("/etc/sun-release", osinfo) && (osinfo.size() > 0))
99c779
     os = osinfo[0];
99c779
-  else if(loadfile("/etc/SuSE-release", osinfo))
99c779
+  else if(loadfile("/etc/SuSE-release", osinfo) && (osinfo.size() > 0))
99c779
     os = osinfo[0];
99c779
-  else if(loadfile("/etc/yellowdog-release", osinfo))
99c779
+  else if(loadfile("/etc/yellowdog-release", osinfo) && (osinfo.size() > 0))
99c779
     os = osinfo[0];
99c779
 
99c779
   if(uname(&u) != 0) return "";
99c779
-- 
99c779
2.10.2
99c779