[Digikam-devel] New Defects reported by Coverity Scan for digiKam

scan-admin at coverity.com scan-admin at coverity.com
Fri Apr 12 22:39:28 BST 2013


Hi,

Please find the latest report on new defect(s) introduced to digiKam found with Coverity SCAN

Defect(s) Reported-by: Coverity Scan

	
** CID 1002054: Uninitialized pointer field (UNINIT_CTOR)
/mnt/devel/GIT/3.x/extra/libkface/libkface/facerecognizer.cpp: 51
http://scan5.coverity.com:8080//sourcebrowser.htm?projectId=10358#mergedDefectId=1002054

** CID 1002053: Resource leak (RESOURCE_LEAK)
/mnt/devel/GIT/3.x/extra/libkface/libkface/facerecognizer.cpp: 178
http://scan5.coverity.com:8080//sourcebrowser.htm?projectId=10358#mergedDefectId=1002053

** CID 1002052: Resource leak (RESOURCE_LEAK)
/mnt/devel/GIT/3.x/core/utilities/facemanagement/facepipeline.cpp: 884
http://scan5.coverity.com:8080//sourcebrowser.htm?projectId=10358#mergedDefectId=1002052

** CID 1002051: Resource leak (RESOURCE_LEAK)
/mnt/devel/GIT/3.x/core/utilities/facemanagement/facepipeline.cpp: 567
http://scan5.coverity.com:8080//sourcebrowser.htm?projectId=10358#mergedDefectId=1002051

** CID 1002050: Missing break in switch (MISSING_BREAK)
/mnt/devel/GIT/3.x/extra/libkface/libkface/database.cpp: 352
http://scan5.coverity.com:8080//sourcebrowser.htm?projectId=10358#mergedDefectId=1002050

** CID 1002049: Resource leak in object (CTOR_DTOR_LEAK)
/mnt/devel/GIT/3.x/extra/libkface/libkface/facerecognizer.cpp: 87
http://scan5.coverity.com:8080//sourcebrowser.htm?projectId=10358#mergedDefectId=1002049


________________________________________________________________________
CID 1002054: Uninitialized pointer field (UNINIT_CTOR)

/mnt/devel/GIT/3.x/extra/libkface/libkface/facerecognizer.cpp: 81 ( member_decl)
   78    
   79    private:
   80    
>>> Class member declaration for "tldRecognitionCore".
   81        Tldrecognition*  tldRecognitionCore;
   82        Tlddatabase* db;
   83    };
   84    
   85    FaceRecognizer::FaceRecognizer()
  

/mnt/devel/GIT/3.x/extra/libkface/libkface/facerecognizer.cpp: 51 ( uninit_member)
   48        {
   49            db = 0;
   50            threshold  = 0.3;
>>> CID 1002054: Uninitialized pointer field (UNINIT_CTOR)
>>> Non-static class member "tldRecognitionCore" is not initialized in this constructor nor in any functions that it calls.
   51        }
   52    
   53        ~FaceRecognizerPriv()
   54        {
   55            delete db;
  
________________________________________________________________________
CID 1002053: Resource leak (RESOURCE_LEAK)

/mnt/devel/GIT/3.x/extra/libkface/libkface/facerecognizer.cpp: 171 ( alloc_fn)
   168            IplImage* const inputfaceimage                    = cvCreateImage(cvSize(47,47),img1->depth,img1->nChannels);
   169            cvResize(img1,inputfaceimage);
   170    
>>> Storage is returned from allocation function "KFaceIface::Tldrecognition::getModeltoStore(IplImage *) const".
   171            KFaceIface::unitFaceModel* const facemodeltostore = d->recognition()->getModeltoStore(inputfaceimage);
   172            facemodeltostore->Name                            = face.name();
   173            facemodeltostore->faceid                          = face.id();
   174    
   175            kDebug() << face.name() << face.id() ;
  

/mnt/devel/GIT/3.x/extra/libkface/libkface/facerecognizer.cpp: 171 ( var_assign)
   168            IplImage* const inputfaceimage                    = cvCreateImage(cvSize(47,47),img1->depth,img1->nChannels);
   169            cvResize(img1,inputfaceimage);
   170    
>>> Assigning: "facemodeltostore" = storage returned from "this->d->recognition()->getModeltoStore(inputfaceimage)".
   171            KFaceIface::unitFaceModel* const facemodeltostore = d->recognition()->getModeltoStore(inputfaceimage);
   172            facemodeltostore->Name                            = face.name();
   173            facemodeltostore->faceid                          = face.id();
   174    
   175            kDebug() << face.name() << face.id() ;
  

/mnt/devel/GIT/3.x/extra/libkface/libkface/facerecognizer.cpp: 177 ( noescape)
   174    
   175            kDebug() << face.name() << face.id() ;
   176    
>>> Resource "facemodeltostore" is not freed or pointed-to in function "KFaceIface::Tlddatabase::insertFaceModel(KFaceIface::unitFaceModel *) const".
   177            d->database()->insertFaceModel(facemodeltostore);             //store facemodel in tlddatabase
   178        }
   179    }
   180    
   181    } // namespace KFaceIface
  

/mnt/devel/GIT/3.x/extra/libkface/libkface/facerecognizer.cpp: 178 ( leaked_storage)
   175            kDebug() << face.name() << face.id() ;
   176    
   177            d->database()->insertFaceModel(facemodeltostore);             //store facemodel in tlddatabase
>>> CID 1002053: Resource leak (RESOURCE_LEAK)
>>> Variable "facemodeltostore" going out of scope leaks the storage it points to.
   178        }
   179    }
   180    
   181    } // namespace KFaceIface
   182    
  
________________________________________________________________________
CID 1002052: Resource leak (RESOURCE_LEAK)

/mnt/devel/GIT/3.x/core/utilities/facemanagement/facepipeline.cpp: 875 ( alloc_fn)
   872                iface.fillImageInFaces(package->image, package->faces, size);
   873            }
   874    
>>> Storage is returned from allocation function "operator new(std::size_t)".
   875            KFaceIface::FaceRecognizer * const recogniser = new KFaceIface::FaceRecognizer();
   876            
   877            for(int faceindex = 0;faceindex < package->faces.size();faceindex++)
   878            {
   879                package->faces[faceindex].setId(package->databaseFaces[faceindex].assignedTagId);
  

/mnt/devel/GIT/3.x/core/utilities/facemanagement/facepipeline.cpp: 875 ( var_assign)
   872                iface.fillImageInFaces(package->image, package->faces, size);
   873            }
   874    
>>> Assigning: "recogniser" = storage returned from "new KFaceIface::FaceRecognizer".
   875            KFaceIface::FaceRecognizer * const recogniser = new KFaceIface::FaceRecognizer();
   876            
   877            for(int faceindex = 0;faceindex < package->faces.size();faceindex++)
   878            {
   879                package->faces[faceindex].setId(package->databaseFaces[faceindex].assignedTagId);
  

/mnt/devel/GIT/3.x/core/utilities/facemanagement/facepipeline.cpp: 883 ( noescape)
   880                kDebug() << "person  " << qPrintable(package->faces.at(faceindex).name())
   881                         << "  stored in recognition database" ;
   882            }
>>> Resource "recogniser" is not freed or pointed-to in function "KFaceIface::FaceRecognizer::storeFaces(QList<KFaceIface::Face> &)".
   883            recogniser->storeFaces(package->faces);
   884        }
   885    
   886        iface.removeFaces(toTrain);
   887        package->databaseFaces.replaceRole(FacePipelineDatabaseFace::ForTraining, FacePipelineDatabaseFace::Trained);
  

/mnt/devel/GIT/3.x/core/utilities/facemanagement/facepipeline.cpp: 884 ( leaked_storage)
   881                         << "  stored in recognition database" ;
   882            }
   883            recogniser->storeFaces(package->faces);
>>> CID 1002052: Resource leak (RESOURCE_LEAK)
>>> Variable "recogniser" going out of scope leaks the storage it points to.
   884        }
   885    
   886        iface.removeFaces(toTrain);
   887        package->databaseFaces.replaceRole(FacePipelineDatabaseFace::ForTraining, FacePipelineDatabaseFace::Trained);
   888    
  
________________________________________________________________________
CID 1002051: Resource leak (RESOURCE_LEAK)

/mnt/devel/GIT/3.x/core/utilities/facemanagement/facepipeline.cpp: 547 ( alloc_fn)
   544            iface.fillImageInFaces(package->image, package->faces, size);
   545        }
   546    
>>> Storage is returned from allocation function "operator new(std::size_t)".
   547        KFaceIface::FaceRecognizer *recogniser = new KFaceIface::FaceRecognizer();
   548    
   549        QList<float> recgnitionRate =  recogniser->recognizeFaces(package->faces);
   550        
   551        if(!recgnitionRate.empty())
  

/mnt/devel/GIT/3.x/core/utilities/facemanagement/facepipeline.cpp: 547 ( var_assign)
   544            iface.fillImageInFaces(package->image, package->faces, size);
   545        }
   546    
>>> Assigning: "recogniser" = storage returned from "new KFaceIface::FaceRecognizer".
   547        KFaceIface::FaceRecognizer *recogniser = new KFaceIface::FaceRecognizer();
   548    
   549        QList<float> recgnitionRate =  recogniser->recognizeFaces(package->faces);
   550        
   551        if(!recgnitionRate.empty())
  

/mnt/devel/GIT/3.x/core/utilities/facemanagement/facepipeline.cpp: 549 ( noescape)
   546    
   547        KFaceIface::FaceRecognizer *recogniser = new KFaceIface::FaceRecognizer();
   548    
>>> Resource "recogniser" is not freed or pointed-to in function "KFaceIface::FaceRecognizer::recognizeFaces(QList<KFaceIface::Face> &)".
   549        QList<float> recgnitionRate =  recogniser->recognizeFaces(package->faces);
   550        
   551        if(!recgnitionRate.empty())
   552        {
   553            for(int faceindex = 0;faceindex < package->faces.size() ;faceindex++ )
  

/mnt/devel/GIT/3.x/core/utilities/facemanagement/facepipeline.cpp: 567 ( leaked_storage)
   564    
   565        package->processFlags |= FacePipelinePackage::ProcessedByRecognizer;
   566        emit processed(package);
>>> CID 1002051: Resource leak (RESOURCE_LEAK)
>>> Variable "recogniser" going out of scope leaks the storage it points to.
   567    }
   568    
   569    void RecognitionWorker::setThreshold(double threshold)
   570    {
   571        recognitionThreshold = (float) threshold;
  
________________________________________________________________________
CID 1002050: Missing break in switch (MISSING_BREAK)

/mnt/devel/GIT/3.x/extra/libkface/libkface/database.cpp: 352 ( unterminated_case)
   349    {
   350        switch(mode)
   351        {
>>> CID 1002050: Missing break in switch (MISSING_BREAK)
>>> This case (value 0) is not terminated by a 'break' statement.
   352        case 0:
   353            d->colorMode = grayscale;
   354        case 1:
   355            d->colorMode = color;
   356        }
  

/mnt/devel/GIT/3.x/extra/libkface/libkface/database.cpp: 354 ( fallthrough)
   351        {
   352        case 0:
   353            d->colorMode = grayscale;
>>> The above case falls through to this one.
   354        case 1:
   355            d->colorMode = color;
   356        }
   357    }
   358    
  
________________________________________________________________________
CID 1002049: Resource leak in object (CTOR_DTOR_LEAK)

/mnt/devel/GIT/3.x/extra/libkface/libkface/facerecognizer.cpp: 87 ( alloc_new)
   84    
   85    FaceRecognizer::FaceRecognizer()
   86        : d(new FaceRecognizerPriv())
>>> CID 1002049: Resource leak in object (CTOR_DTOR_LEAK)
>>> Allocating memory by calling "new KFaceIface::FaceRecognizer::FaceRecognizerPriv".
   87    {
   88    }
   89    
   90    FaceRecognizer::~FaceRecognizer()
   91    {
  

/mnt/devel/GIT/3.x/extra/libkface/libkface/facerecognizer.cpp: 87 ( var_assign)
   84    
   85    FaceRecognizer::FaceRecognizer()
   86        : d(new FaceRecognizerPriv())
>>> Assigning: "this->d" = "new KFaceIface::FaceRecognizer::FaceRecognizerPriv".
   87    {
   88    }
   89    
   90    FaceRecognizer::~FaceRecognizer()
   91    {
  

/mnt/devel/GIT/3.x/extra/libkface/libkface/facerecognizer.cpp: 87 ( ctor_dtor_leak)
   84    
   85    FaceRecognizer::FaceRecognizer()
   86        : d(new FaceRecognizerPriv())
>>> The constructor allocates field "d" of "KFaceIface::FaceRecognizer" but the destructor and whatever functions it calls do not free it.
   87    {
   88    }
   89    
   90    FaceRecognizer::~FaceRecognizer()
   91    {
  
________________________________________________________________________
To view the defects in Coverity Scan visit, http://scan5.coverity.com:8080

If you don't have a username, you can request one by emailing: scan-admin at coverity.com

To unsubscribe from the email notification for new defects, http://scan.coverity.com/email_unsubscribe.html
If you are project owner, you can subscribe your team member by accessing  http://scan.coverity.com/email_subscription.html



More information about the Digikam-devel mailing list