"Daniel P. Berrange" <berrange(a)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));