Review Request: Check KFileItem d pointer for validity in KFileItem methods

David Faure faure at kde.org
Tue Oct 16 16:39:08 BST 2012


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



kio/kio/kfileitem.cpp
<http://git.reviewboard.kde.org/r/106902/#comment16145>

    kdelibs coding style says this should be on the same line as the if().



kio/kio/kfileitem.cpp
<http://git.reviewboard.kde.org/r/106902/#comment16146>

    Don't put the method name in the warning, kWarning does that.
    
    My bad for pointing you to QImage which doens't do that.



kio/kio/kfileitem.cpp
<http://git.reviewboard.kde.org/r/106902/#comment16147>

    setter, should warn



kio/kio/kfileitem.cpp
<http://git.reviewboard.kde.org/r/106902/#comment16148>

    setter, should warn



kio/kio/kfileitem.cpp
<http://git.reviewboard.kde.org/r/106902/#comment16149>

    supposed to trigger an action, should warn



kio/kio/kfileitem.cpp
<http://git.reviewboard.kde.org/r/106902/#comment16155>

    (setter, but deprecated, so don't warn, IMHO)



kio/kio/kfileitem.cpp
<http://git.reviewboard.kde.org/r/106902/#comment16151>

    coding style: move up



kio/kio/kfileitem.cpp
<http://git.reviewboard.kde.org/r/106902/#comment16152>

    Hmm, this is tricky.
    We should always match the number of >> that were done in the stream, otherwise everything will go wrong.
    
    If a.d is null, then we can't restore the item. We should warn, then, and probably restore the 3 fields into temporary (thrown away) variables.
    
    If on the other end a null item was streamed in (empty URL), then we should 1) check for that (you missed that step: if url.isEmpty() { nothing else to stream out } ), and 2) well, make "a" null, so delete a.d; a.d = 0;



kio/kio/kfileitem.cpp
<http://git.reviewboard.kde.org/r/106902/#comment16153>

    setter, should warn



kio/kio/kfileitem.cpp
<http://git.reviewboard.kde.org/r/106902/#comment16154>

    setter, should warn


- David Faure


On Oct. 16, 2012, 2:43 p.m., Ignat Semenov wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://git.reviewboard.kde.org/r/106902/
> -----------------------------------------------------------
> 
> (Updated Oct. 16, 2012, 2:43 p.m.)
> 
> 
> Review request for kdelibs and David Faure.
> 
> 
> Description
> -------
> 
> Check the d pointer for validity since it is set to 0 by the defaut KFileItem ctor.
> 
> Patch based on similar code from QImage.
> 
> I'd like to draw your attention to these issues:
> 
> 1) KFileItem::setUDSEntry()
> For a null KFileItem, this should probably create a new d and initialize it. Ideally, we'd have a dedicated public function to do that (see QImage::create()), but since we can not change the public API (or can we?), I put the new in setUDSEntry(). Anyway, this is now the only interface function that can init a null KFileItem (before the patch, there had been none). All the other set* functions do not new the d, but rather return on d == 0.
> 2) KFileItem::cmp()
> What should this return for a null KFileItem? I return false, but still, it feels wrong to me.
> 3) operator << / operator >>
> << returns "null KFileItem" for d == 0 and >> does nothing, returning the original stream unmodified. operator << thus duplicates the public operator <<(QDebug&).
> 4) This also overrides dfaure's patch for KFileItem::metaInfo(). There is a
> 
> return d->metaInfo()
> 
> at the end of the function, so this can crash as well.
> 
> All the classes' objects that are default-constructed and then returned in the case of d == 0 can be checked for validity, looked it up in the code.
> 
> 
> This addresses bug 299726.
>     http://bugs.kde.org/show_bug.cgi?id=299726
> 
> 
> Diffs
> -----
> 
>   kio/kio/kfileitem.cpp 8ab5a1d 
> 
> Diff: http://git.reviewboard.kde.org/r/106902/diff/
> 
> 
> Testing
> -------
> 
> Builds fine.
> 
> 
> Thanks,
> 
> Ignat Semenov
> 
>

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


More information about the kde-core-devel mailing list