File corruption with KSaveFile on full disk

Michael Leupold lemma at confuego.org
Sun Jan 18 01:19:53 GMT 2009


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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20090118/4984acb1/attachment.sig>


More information about the kde-core-devel mailing list