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

Daniel P. Berrange berrange at redhat.com
Tue Jan 8 16:17:19 UTC 2008


On Tue, Jan 08, 2008 at 02:11:56PM +0000, Richard W.M. Jones wrote:
> Jim Meyering wrote:
> >"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));
> 
> Agreed.  Dan?

Yes, thanks Jim - just committed this fix.

Dan.
-- 
|=- Red Hat, Engineering, Emerging Technologies, Boston.  +1 978 392 2496 -=|
|=-           Perl modules: http://search.cpan.org/~danberr/              -=|
|=-               Projects: http://freshmeat.net/~danielpb/               -=|
|=-  GnuPG: 7D3B9505   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505  -=| 




More information about the libvir-list mailing list