[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-core-devel
Subject:    Re: File corruption with KSaveFile on full disk
From:       Michael Leupold <lemma () confuego ! org>
Date:       2009-01-18 1:19:53
Message-ID: 200901180219.55648.lemma () confuego ! org
[Download RAW message or body]


On Saturday 17 January 2009 23:53:48 Sebastian Sauer wrote:
> Michael Leupold wrote:
> > Hi,
> >
> > I received a bugreport about someone loosing his wallet today. Basically
> > a process filled his disk while the wallet was open. On closing it
> > something went terribly wrong and he ended up with a kdewallet.kwl with
> > size 0.
> >
> > I'm pretty much stuck because I couldn't reproduce myself but I assumed
> > this couldn't happen as kwalletd's backend uses KSaveFile to make sure
> > either the whole wallet gets saved or nothing. As KSaveFile seems to be
> > currently unmaintained I hope someone of you knows if it's supposed to
> > handle full disk and if there's a corner case where this might indeed
> > lead to corruption.
> >
> > The bugreport is: http://bugs.kde.org/show_bug.cgi?id=181059
> >
> > Thanks and regards,
> > Michael
>
> in the method Backend::sync() in kwalletbackend.cc shouldn't the
> returnvalues of the sf.write() be checked? else the sf.write() may fail, we
> ignore it and then finalize the empty file...

Thanks, I missed that and that's the reason the wallet went missing.

Another catch I discovered:
I seem to have to check the return value and use waitForBytesWritten() unless 
I'm using unbuffered output as QIODevice::write() might (will?) return the 
number of bytes I tried to write even if the disk is full. That's at least 
what a simple test suggests.

Thanks to everyone helping me out on this.

Regards,
Michael

["signature.asc" (application/pgp-signature)]

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic