Open Bug 1280752 Opened 8 years ago Updated 2 years ago

(coverity) uninitialized scalar variable: mailnews/imap/src/nsImapMailFolder.cpp: |rv| is not set value always before being returned as function return value.

Categories

(MailNews Core :: Networking: IMAP, defect)

defect

Tracking

(Not tracked)

People

(Reporter: ishikawa, Unassigned)

References

(Blocks 1 open bug, )

Details

(Keywords: coverity, Whiteboard: CID 1137537)

Coverity found this:

|rv| is not set always, and is returned as function value.

4131nsresult nsImapMailFolder::MoveIncorporatedMessage(nsIMsgDBHdr *mailHdr,
4132                                                   nsIMsgDatabase *sourceDB,
4133                                                   const nsACString& destFolderUri,
4134                                                   nsIMsgFilter *filter,
4135                                                   nsIMsgWindow *msgWindow)
4136{
    1. var_decl: Declaring variable rv without initializer.
4137  nsresult rv;
    2. Condition this->m_moveCoalescer, taking false branch
4138  if (m_moveCoalescer)
4139  {
4140    nsCOMPtr<nsIRDFService> rdf(do_GetService(kRDFServiceCID, &rv));
4141    NS_ENSURE_SUCCESS(rv, rv);
4142    nsCOMPtr<nsIRDFResource> res;
4143    rv = rdf->GetResource(destFolderUri, getter_AddRefs(res));
4144    if (NS_FAILED(rv))
4145      return rv;
4146
4147    nsCOMPtr<nsIMsgFolder> destIFolder(do_QueryInterface(res, &rv));
4148    if (NS_FAILED(rv))
4149      return rv;
4150
4151    if (destIFolder)
4152    {
4153      // check if the destination is a real folder (by checking for null parent)
4154      // and if it can file messages (e.g., servers or news folders can't file messages).
4155      // Or read only imap folders...
4156      bool canFileMessages = true;
4157      nsCOMPtr<nsIMsgFolder> parentFolder;
4158      destIFolder->GetParent(getter_AddRefs(parentFolder));
4159      if (parentFolder)
4160        destIFolder->GetCanFileMessages(&canFileMessages);
4161      if (filter && (!parentFolder || !canFileMessages))
4162      {
4163        filter->SetEnabled(false);
4164        m_filterList->SaveToDefaultFile();
4165        destIFolder->ThrowAlertMsg("filterDisabled",msgWindow);
4166        return NS_MSG_NOT_A_MAIL_FOLDER;
4167      }
4168      // put the header into the source db, since it needs to be there when we copy it
4169      // and we need a valid header to pass to StartAsyncCopyMessagesInto
4170      nsMsgKey keyToFilter;
4171      mailHdr->GetMessageKey(&keyToFilter);
4172
4173      if (sourceDB && destIFolder)
4174      {
4175        bool imapDeleteIsMoveToTrash = DeleteIsMoveToTrash();
4176        m_moveCoalescer->AddMove (destIFolder, keyToFilter);
4177        // For each folder, we need to keep track of the ids we want to move to that
4178        // folder - we used to store them in the MSG_FolderInfo and then when we'd finished
4179        // downloading headers, we'd iterate through all the folders looking for the ones
4180        // that needed messages moved into them - perhaps instead we could
4181        // keep track of nsIMsgFolder, nsTArray<nsMsgKey> pairs here in the imap code.
4182        // nsTArray<nsMsgKey> *idsToMoveFromInbox = msgFolder->GetImapIdsToMoveFromInbox();
4183        // idsToMoveFromInbox->AppendElement(keyToFilter);
4184        if (imapDeleteIsMoveToTrash)
4185        {
4186        }
4187        bool isRead = false;
4188        mailHdr->GetIsRead(&isRead);
4189        if (imapDeleteIsMoveToTrash)
4190          rv = NS_OK;
4191      }
4192    }
4193  }
4194
4195  // we have to return an error because we do not actually move the message
4196  // it is done async and that can fail
    CID 1137537 (#1 of 1): Uninitialized scalar variable (UNINIT)3. uninit_use: Using uninitialized value rv.
4197  return rv;
4198}

Observation:

We should decide what to return in |rv| when
(m_moveCoalescer) is NOT true.

The comment before |return rv| at the end of the function is disturbing.

4195  // we have to return an error because we do not actually move the message
4196  // it is done async and that can fail
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.