mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-28 21:47:18 +03:00
uml: Remove PATH_MAX sized stack allocation from /proc parsing code
This commit is contained in:
parent
cd708ef4ea
commit
3ac2a6f1b5
@ -1036,21 +1036,25 @@ static char *umlGetCapabilities(virConnectPtr conn) {
|
||||
|
||||
|
||||
|
||||
static int umlGetProcessInfo(unsigned long long *cpuTime, int pid) {
|
||||
char proc[PATH_MAX];
|
||||
static int umlGetProcessInfo(unsigned long long *cpuTime, int pid)
|
||||
{
|
||||
char *proc;
|
||||
FILE *pidinfo;
|
||||
unsigned long long usertime, systime;
|
||||
|
||||
if (snprintf(proc, sizeof(proc), "/proc/%d/stat", pid) >= (int)sizeof(proc)) {
|
||||
if (virAsprintf(&proc, "/proc/%d/stat", pid) < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!(pidinfo = fopen(proc, "r"))) {
|
||||
/* VM probably shut down, so fake 0 */
|
||||
*cpuTime = 0;
|
||||
VIR_FREE(proc);
|
||||
return 0;
|
||||
}
|
||||
|
||||
VIR_FREE(proc);
|
||||
|
||||
if (fscanf(pidinfo, "%*d %*s %*c %*d %*d %*d %*d %*d %*u %*u %*u %*u %*u %llu %llu", &usertime, &systime) != 2) {
|
||||
umlDebug("not enough arg");
|
||||
VIR_FORCE_FCLOSE(pidinfo);
|
||||
|
Loading…
x
Reference in New Issue
Block a user