Text   |  XML   |  ReML   |   Visible Warnings:

Buffer Overrun  at strfuncs.c:39

No properties have been set. | edit properties
Jump to warning location ↓ warning details...
Show Events | Options

cmd_copy

(/home/sate/Testcases/c/cve/dovecot-1.2.0/src/imap/cmd-copy.c)expand/collapse
Show more  
 93  bool cmd_copy(struct client_command_context *cmd)
 94  {
 95          struct client *client = cmd->client;
 96          struct mail_storage *storage;
 97          struct mailbox *destbox;
 98          struct mailbox_transaction_context *t;
 99          struct mail_search_args *search_args;
 100          const char *messageset, *mailbox, *src_uidset, *msg = NULL;
 101          enum mailbox_sync_flags sync_flags = 0;
 102          enum imap_sync_flags imap_flags = 0;
 103          unsigned int copy_count;
 104          uint32_t uid_validity, uid1, uid2;
 105          int ret;
 106   
 107          /* <message set> <mailbox> */
 108[+]         if (!client_read_string_args(cmd, 2, &messageset, &mailbox))
 109                  return FALSE;
 110   
 111[+]         if (!client_verify_open_mailbox(cmd))
 112                  return TRUE;
 113   
 114          /* open the destination mailbox */
 115          if (!client_verify_mailbox_name(cmd, mailbox,
 116[+]                                 CLIENT_VERIFY_MAILBOX_SHOULD_EXIST_TRYCREATE))
 117                  return TRUE;
 118   
 119[+]         ret = imap_search_get_seqset(cmd, messageset, cmd->uid, &search_args);
 120          if (ret <= 0)
 121                  return ret < 0;
 122   
 123[+]         storage = client_find_storage(cmd, &mailbox);
 124          if (storage == NULL)
 125                  return TRUE;
 126   
 127          if (mailbox_equals(client->mailbox, storage, mailbox))
 128                  destbox = client->mailbox;
 129          else {
 130                  destbox = mailbox_open(&storage, mailbox, NULL,
 131                                         MAILBOX_OPEN_SAVEONLY |
 132                                         MAILBOX_OPEN_FAST |
 133[+]                                        MAILBOX_OPEN_KEEP_RECENT);
 134                  if (destbox == NULL) {
 135                          client_send_storage_error(cmd, storage);
 136                          return TRUE;
 137                  }
 138                  if (client->enabled_features != 0)
 139                          mailbox_enable(destbox, client->enabled_features);
 140          }
 141   
 142          t = mailbox_transaction_begin(destbox,
 143                                        MAILBOX_TRANSACTION_FLAG_EXTERNAL |
 144                                        MAILBOX_TRANSACTION_FLAG_ASSIGN_UIDS);
 145          ret = fetch_and_copy(client, destbox, t, search_args,
 146[+]                              &src_uidset, &copy_count);
 147          mail_search_args_unref(&search_args);
 148   
 149          if (ret <= 0)
 150                  mailbox_transaction_rollback(&t);
 151          else if (mailbox_transaction_commit_get_uids(&t, &uid_validity,
 152                                                       &uid1, &uid2) < 0)
 153                  ret = -1;
 154          else if (copy_count == 0)
 155                  msg = "OK No messages copied.";
 156          else {
 157                  i_assert(copy_count == uid2 - uid1 + 1);
 158   
 159                  if (uid1 == 0)
 160                          msg = "OK Copy completed.";
 161                  if (uid1 == uid2) {
 162                          msg = t_strdup_printf("OK [COPYUID %u %s %u] "
 163                                                "Copy completed.",
 164[+]                                               uid_validity, src_uidset, uid1);
 165                  } else {
 166                          msg = t_strdup_printf("OK [COPYUID %u %s %u:%u] "
 167                                                "Copy completed.",
 168                                                uid_validity, src_uidset,
 169                                                uid1, uid2);
 170                  }
 171          }
 172   
 173          if (destbox != client->mailbox) {
 174                  sync_flags |= MAILBOX_SYNC_FLAG_FAST;
 175                  imap_flags |= IMAP_SYNC_FLAG_SAFE;
 176                  mailbox_close(&destbox);
 177          }
 178   
 179          if (ret > 0)
 180[+]                 return cmd_sync(cmd, sync_flags, imap_flags, msg);
expand/collapse

cmd_sync

(/home/sate/Testcases/c/cve/dovecot-1.2.0/src/imap/imap-sync.c)expand/collapse
Show more  
 645  bool cmd_sync(struct client_command_context *cmd, enum mailbox_sync_flags flags,
 646                enum imap_sync_flags imap_flags, const char *tagline)
 647  {
 648[+]         return cmd_sync_full(cmd, flags, imap_flags, tagline, NULL);
expand/collapse

cmd_sync_full

(/home/sate/Testcases/c/cve/dovecot-1.2.0/src/imap/imap-sync.c)expand/collapse
Show more  
 610  cmd_sync_full(struct client_command_context *cmd, enum mailbox_sync_flags flags,
 611                enum imap_sync_flags imap_flags, const char *tagline,
 612                imap_sync_callback_t *callback)
 613  {
 614          struct client *client = cmd->client;
 615   
 616          i_assert(client->output_lock == cmd || client->output_lock == NULL);
 617   
 618          if (cmd->cancel)
 619                  return TRUE;
 620   
 621          if (client->mailbox == NULL) {
 622                  /* no mailbox selected, no point in delaying the sync */
 623                  i_assert(callback == NULL);
 624                  client_send_tagline(cmd, tagline);
 625                  return TRUE;
 626          }
 627   
 628          cmd->sync = p_new(cmd->pool, struct client_sync_context, 1);
 629          cmd->sync->counter = client->sync_counter;
 630          cmd->sync->flags = flags;
 631          cmd->sync->imap_flags = imap_flags;
 632[+]         cmd->sync->tagline = p_strdup(cmd->pool, tagline);
expand/collapse

p_strdup

(/home/sate/Testcases/c/cve/dovecot-1.2.0/src/lib/strfuncs.c)expand/collapse
Show more  
 31  char *p_strdup(pool_t pool, const char *str)
 32  {
 33          void *mem;
 34          size_t len;
 35   
 36          if (str == NULL)
 37                  return NULL;
 38   
 39          for (len = 0; (str)[len] != '\0'; )
 40                  len++;
Show more  
Show more  
Show more  
Show more  




Change Warning 7972.24988 : Buffer Overrun

Priority:
State:
Finding:
Owner:
Note: