Review Request: Fix KConfigIniBackend::isWritable() when the parent directory doesn't exist

David Faure faure at kde.org
Mon Jan 2 10:12:31 GMT 2012


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/103577/#review9428
-----------------------------------------------------------

Ship it!


Looks good. A bit hard to read, but that's QDir/QFileInfo's fault, not yours :)

You don't seem to have a kde contributor account, do you want to get one, or should I commit this for you?

- David Faure


On Dec. 30, 2011, 2:44 a.m., Anssi Hannula wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://git.reviewboard.kde.org/r/103577/
> -----------------------------------------------------------
> 
> (Updated Dec. 30, 2011, 2:44 a.m.)
> 
> 
> Review request for kdelibs.
> 
> 
> Description
> -------
> 
> KConfigIniBackend::isWritable() tries to handle cases where the config
> file doesn't exist and one or more of the deepest directories don't
> exist either, in which case 'true' is returned if the deepest directory
> is writable.
> 
> However, this fails because the code tries to use QDir::cdUp() to go
> upwards until an existing directory is found. As per documentation,
> cdUp() will fail when the parent directory doesn't exist, causing
> isWritable() to bail out and return false without checking further
> parent directories.
> 
> This will cause e.g. KConfig::accessMode() to return ReadOnly if the
> configuration directory structure doesn't exist yet, even if the KConfig
> is actually writeable (the parent directories are automatically created
> by KConfigIniBackend at writing time). This was observed at
> https://bugs.mageia.org/show_bug.cgi?id=3601#c10
> 
> Fix that by walking through the tree using QFileInfo::absolutePath()
> instead.
> 
> 
> Diffs
> -----
> 
>   kdecore/config/kconfigini.cpp 5f7ba7c 
> 
> Diff: http://git.reviewboard.kde.org/r/103577/diff/diff
> 
> 
> Testing
> -------
> 
> Built kdelibs 4.7.95 with the patch, the error message in the referenced Mageia bugreport comment (which is shown when accessMode() returns ReadOnly) doesn't show up anymore when the ~/.kde4 directory tree doesn't exist. Also, if I create an empty ~/.kde4 dir without any permissions, the accessMode() call still returns ReadOnly as expected.
> 
> 
> Thanks,
> 
> Anssi Hannula
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20120102/c4dfd937/attachment.htm>


More information about the kde-core-devel mailing list