summaryrefslogtreecommitdiff
path: root/src/dmidecode
diff options
context:
space:
mode:
authorStephen Hemminger <shemminger@vyatta.com>2012-03-02 16:46:39 -0800
committerStephen Hemminger <shemminger@vyatta.com>2012-03-03 09:56:10 -0800
commit6f0d227c17e898f5c1a0e015bd3275f56ae23a19 (patch)
tree9f40b2f18710e1fee144cc9cff686e18fe6a47cb /src/dmidecode
parentd86431f9a431288b3b9d0bed26303a13cc1875b5 (diff)
downloadvyatta-biosdevname-6f0d227c17e898f5c1a0e015bd3275f56ae23a19.tar.gz
vyatta-biosdevname-6f0d227c17e898f5c1a0e015bd3275f56ae23a19.zip
Update to biosdevname 0.3.11
Manual merge from http://linux.dell.com/biosdevname/biosdevname-0.3.11/ (cherry picked from commit 79066f1bdcb77fa8cfca2d98464257e1e436b58d)
Diffstat (limited to 'src/dmidecode')
-rw-r--r--src/dmidecode/dmidecode.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/dmidecode/dmidecode.c b/src/dmidecode/dmidecode.c
index ec91305..7bedc3a 100644
--- a/src/dmidecode/dmidecode.c
+++ b/src/dmidecode/dmidecode.c
@@ -40,6 +40,8 @@
#include "../pci.h"
#include "../naming_policy.h"
+extern int smver_mjr, smver_mnr;
+
static const char *bad_index = "<BAD INDEX>";
/*
@@ -176,12 +178,27 @@ static void to_dmi_header(struct dmi_header *h, u8 *data)
h->data=data;
}
+static int isvalidsmbios(int mjr, int mnr)
+{
+ if (!smver_mjr && !smver_mnr)
+ return 1;
+ if (mjr > smver_mjr)
+ return 1;
+ if ((mjr == smver_mjr) && (mnr >= smver_mnr))
+ return 1;
+ return 0;
+}
+
static void dmi_table(u32 base, u16 len, u16 num, u16 ver, const char *devmem, const struct libbiosdevname_state *state)
{
u8 *buf;
u8 *data;
int i=0;
+ /* Verify SMBIOS version */
+ if (!isvalidsmbios(ver >> 8, ver & 0xFF)) {
+ return;
+ }
if((buf=mem_chunk(base, len, devmem))==NULL)
{
#ifndef USE_MMAP