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;
|
||||
}
|
||||
|
||||
static bool
|
||||
libxlGetAutoballoonConf(libxlDriverConfigPtr cfg)
|
||||
static int
|
||||
libxlGetAutoballoonConf(libxlDriverConfigPtr cfg, bool *autoballoon)
|
||||
{
|
||||
regex_t regex;
|
||||
int ret;
|
||||
int res;
|
||||
|
||||
ret = regcomp(®ex,
|
||||
"(^| )dom0_mem=((|min:|max:)[0-9]+[bBkKmMgG]?,?)+($| )",
|
||||
REG_NOSUB | REG_EXTENDED);
|
||||
if (ret)
|
||||
return true;
|
||||
if ((res = regcomp(®ex,
|
||||
"(^| )dom0_mem=((|min:|max:)[0-9]+[bBkKmMgG]?,?)+($| )",
|
||||
REG_NOSUB | REG_EXTENDED)) != 0) {
|
||||
char error[100];
|
||||
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);
|
||||
return ret == REG_NOMATCH;
|
||||
*autoballoon = res == REG_NOMATCH;
|
||||
return 0;
|
||||
}
|
||||
|
||||
libxlDriverConfigPtr
|
||||
@ -1098,7 +1105,8 @@ libxlDriverConfigNew(void)
|
||||
}
|
||||
|
||||
/* setup autoballoon */
|
||||
cfg->autoballoon = libxlGetAutoballoonConf(cfg);
|
||||
if (libxlGetAutoballoonConf(cfg, &cfg->autoballoon) < 0)
|
||||
goto error;
|
||||
|
||||
return cfg;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user