From: Matthias Bolte Date: Fri, 27 May 2011 15:13:58 +0000 (+0200) Subject: openvz: Restore original EOF handling in openvzGetProcessInfo X-Git-Tag: CVE-2011-2178~15 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cf7d897f9335fdf477735465e5dc683b9d60c771;p=thirdparty%2Flibvirt.git openvz: Restore original EOF handling in openvzGetProcessInfo This function is also affected by getline conversion. But this didn't result in a regression in general, because the difference would only affect the behavior of the function when the line in /proc/vz/vestat for the given vpsid wasn't found. Under normal conditions this should not happen. --- diff --git a/src/openvz/openvz_driver.c b/src/openvz/openvz_driver.c index ae951a28dc..e24b5d8f96 100644 --- a/src/openvz/openvz_driver.c +++ b/src/openvz/openvz_driver.c @@ -1507,6 +1507,7 @@ static int openvzGetProcessInfo(unsigned long long *cpuTime, int vpsid) unsigned long long usertime, systime, nicetime; int readvps = vpsid + 1; /* ensure readvps is initially different */ ssize_t ret; + int err = 0; /* read statistic from /proc/vz/vestat. sample: @@ -1522,8 +1523,10 @@ Version: 2.2 /*search line with VEID=vpsid*/ while (1) { ret = getline(&line, &line_size, fp); - if (ret <= 0) + if (ret < 0) { + err = !feof(fp); break; + } if (sscanf (line, "%d %llu %llu %llu", &readvps, &usertime, &nicetime, &systime) == 4 @@ -1538,7 +1541,7 @@ Version: 2.2 VIR_FREE(line); VIR_FORCE_FCLOSE(fp); - if (ret < 0) + if (err) return -1; if (readvps != vpsid) /*not found*/