Text   |  XML   |  ReML   |   Visible Warnings:

Null Pointer Dereference  at squat-uidlist.c:355

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

squat_uidlist_map_blocks

(/home/sate/Testcases/c/cve/dovecot-1.2.0/src/plugins/fts-squat/squat-uidlist.c)expand/collapse
Show more  
 313  static int squat_uidlist_map_blocks(struct squat_uidlist *uidlist)
 314  {
 315          const struct squat_uidlist_file_header *hdr = &uidlist->hdr;
 316          const void *base;
 317          uint32_t block_count, blocks_offset, blocks_size, i, verify_count;
 318   
 319          if (hdr->block_list_offset == 0) {
 320                  /* empty file */
 321                  uidlist->cur_block_count = 0;
 322                  return 1;
 323          }
 324   
 325          /* get number of blocks */
 326          if (uidlist_file_cache_read(uidlist, hdr->block_list_offset,
 327[+]                                     sizeof(block_count)) < 0)
 328                  return -1;
 329          blocks_offset = hdr->block_list_offset + sizeof(block_count);
 330          if (blocks_offset > uidlist->data_size) {
 331                  squat_uidlist_set_corrupted(uidlist, "block list outside file");
 332                  return 0;
 333          }
 334   
 335          base = CONST_PTR_OFFSET(uidlist->data, hdr->block_list_offset);
 336          memcpy(&block_count, base, sizeof(block_count));
 337   
 338          /* map the blocks */
 339          blocks_size = block_count * sizeof(uint32_t)*2;
 340[+]         if (uidlist_file_cache_read(uidlist, blocks_offset, blocks_size) < 0)
 341                  return -1;
 342          if (blocks_offset + blocks_size > uidlist->data_size) {
 343                  squat_uidlist_set_corrupted(uidlist, "block list outside file");
 344                  return 0;
 345          }
 346   
 347          uidlist->cur_block_count = block_count;
 348[+]         squat_uidlist_map_blocks_set_pointers(uidlist);
 349   
 350          /* verify just a couple of the end indexes to make sure they
 351             look correct */
 352          verify_count = I_MIN(block_count, 8);
 353          for (i = 1; i < verify_count; i++) {
 354                  if (unlikely(uidlist->cur_block_end_indexes[i-1] >=
 355                               uidlist->cur_block_end_indexes[i])) {
Show more  




Change Warning 8087.24572 : Null Pointer Dereference

Priority:
State:
Finding:
Owner:
Note: