mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-24 22:55:23 +00:00
libxl: Check for regcomp failure
Change libxlGetAutoballoonConf() function to return an int for success/failure, and fail if regcomp fails.
This commit is contained in:
parent
7e1cbd14bb
commit
3fed82daa4
@ -1014,21 +1014,28 @@ error:
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static int
|
||||||
libxlGetAutoballoonConf(libxlDriverConfigPtr cfg)
|
libxlGetAutoballoonConf(libxlDriverConfigPtr cfg, bool *autoballoon)
|
||||||
{
|
{
|
||||||
regex_t regex;
|
regex_t regex;
|
||||||
int ret;
|
int res;
|
||||||
|
|
||||||
ret = regcomp(®ex,
|
if ((res = regcomp(®ex,
|
||||||
"(^| )dom0_mem=((|min:|max:)[0-9]+[bBkKmMgG]?,?)+($| )",
|
"(^| )dom0_mem=((|min:|max:)[0-9]+[bBkKmMgG]?,?)+($| )",
|
||||||
REG_NOSUB | REG_EXTENDED);
|
REG_NOSUB | REG_EXTENDED)) != 0) {
|
||||||
if (ret)
|
char error[100];
|
||||||
return true;
|
regerror(res, ®ex, error, sizeof(error));
|
||||||
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
|
_("Failed to compile regex %s"),
|
||||||
|
error);
|
||||||
|
|
||||||
ret = regexec(®ex, cfg->verInfo->commandline, 0, NULL, 0);
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
res = regexec(®ex, cfg->verInfo->commandline, 0, NULL, 0);
|
||||||
regfree(®ex);
|
regfree(®ex);
|
||||||
return ret == REG_NOMATCH;
|
*autoballoon = res == REG_NOMATCH;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
libxlDriverConfigPtr
|
libxlDriverConfigPtr
|
||||||
@ -1098,7 +1105,8 @@ libxlDriverConfigNew(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* setup autoballoon */
|
/* setup autoballoon */
|
||||||
cfg->autoballoon = libxlGetAutoballoonConf(cfg);
|
if (libxlGetAutoballoonConf(cfg, &cfg->autoballoon) < 0)
|
||||||
|
goto error;
|
||||||
|
|
||||||
return cfg;
|
return cfg;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user