mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-30 16:35:24 +00:00
Validate the bios_date format for <sysinfo>
Add incorrectly formatted bios_date validation test
This commit is contained in:
parent
14b3cac5bc
commit
21540f5ee3
@ -8465,6 +8465,29 @@ virSysinfoParseXML(const xmlNodePtr node,
|
||||
virXPathString("string(bios/entry[@name='version'])", ctxt);
|
||||
def->bios_date =
|
||||
virXPathString("string(bios/entry[@name='date'])", ctxt);
|
||||
if (def->bios_date != NULL) {
|
||||
char *ptr;
|
||||
int month, day, year;
|
||||
|
||||
/* Validate just the format of the date
|
||||
* Expect mm/dd/yyyy or mm/dd/yy,
|
||||
* where yy must be 00->99 and would be assumed to be 19xx
|
||||
* a yyyy date should be 1900 and beyond
|
||||
*/
|
||||
if (virStrToLong_i(def->bios_date, &ptr, 10, &month) < 0 ||
|
||||
*ptr != '/' ||
|
||||
virStrToLong_i(ptr + 1, &ptr, 10, &day) < 0 ||
|
||||
*ptr != '/' ||
|
||||
virStrToLong_i(ptr + 1, &ptr, 10, &year) < 0 ||
|
||||
*ptr != '\0' ||
|
||||
(month < 1 || month > 12) ||
|
||||
(day < 1 || day > 31) ||
|
||||
(year < 0 || (year >= 100 && year < 1900))) {
|
||||
virReportError(VIR_ERR_XML_DETAIL, "%s",
|
||||
_("Invalid BIOS 'date' format"));
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
def->bios_release =
|
||||
virXPathString("string(bios/entry[@name='release'])", ctxt);
|
||||
|
||||
|
23
tests/qemuxml2argvdata/qemuxml2argv-smbios-date.xml
Normal file
23
tests/qemuxml2argvdata/qemuxml2argv-smbios-date.xml
Normal file
@ -0,0 +1,23 @@
|
||||
<domain type='qemu'>
|
||||
<name>smbios</name>
|
||||
<uuid>362d1fc1-df7d-193e-5c18-49a71bd1da66</uuid>
|
||||
<memory unit='KiB'>1048576</memory>
|
||||
<currentMemory unit='KiB'>1048576</currentMemory>
|
||||
<vcpu placement='static'>1</vcpu>
|
||||
<os>
|
||||
<type arch='i686' machine='pc'>hvm</type>
|
||||
<smbios mode="sysinfo"/>
|
||||
</os>
|
||||
<sysinfo type="smbios">
|
||||
<bios>
|
||||
<entry name="date">999/999/123</entry>
|
||||
</bios>
|
||||
</sysinfo>
|
||||
<clock offset='utc'/>
|
||||
<on_poweroff>destroy</on_poweroff>
|
||||
<on_reboot>restart</on_reboot>
|
||||
<on_crash>restart</on_crash>
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu</emulator>
|
||||
</devices>
|
||||
</domain>
|
@ -825,6 +825,7 @@ mymain(void)
|
||||
|
||||
|
||||
DO_TEST("smbios", QEMU_CAPS_SMBIOS_TYPE);
|
||||
DO_TEST_PARSE_ERROR("smbios-date", QEMU_CAPS_SMBIOS_TYPE);
|
||||
|
||||
DO_TEST("watchdog", NONE);
|
||||
DO_TEST("watchdog-device", QEMU_CAPS_DEVICE, QEMU_CAPS_NODEFCONFIG);
|
||||
|
Loading…
x
Reference in New Issue
Block a user