[Libvir] PATCH: BZ 426425: Fix truncated reading of config files

Jim Meyering jim at meyering.net
Tue Jan 8 10:24:31 UTC 2008


"Daniel P. Berrange" <berrange at redhat.com> wrote:

> On Fri, Jan 04, 2008 at 09:55:47AM +0000, Richard W.M. Jones wrote:
>> Daniel P. Berrange wrote:
>> >The virConfReadFile  API  has a fixed 4096 byte buffer it reads the config
>> >file into, regardless of the config file size and silently drops any data
>> >exceeding this.
>>
>> Ah, the joys of C ...
>>
>> >+    if ((ret = fread(*buf, st.st_size, 1, fh)) != 1) {
>> >+        free(buf);
>> >+        buf = NULL;
>>
>> I wonder if you meant to write *buf = NULL here?
>
> Yes, indeed. I'll make that change before committing.

You'll want this one, too:

diff --git a/src/util.c b/src/util.c
index 0fa3611..01fc6e9 100644
--- a/src/util.c
+++ b/src/util.c
@@ -308,7 +308,7 @@ int virFileReadAll(const char *path,
     }

     if ((ret = fread(*buf, st.st_size, 1, fh)) != 1) {
-        free(buf);
+        free(*buf);
         *buf = NULL;
         virLog("Failed to read config file '%s': %s",
                path, strerror(errno));




More information about the libvir-list mailing list