Text   |  XML   |  ReML   |   Visible Warnings:

Ignored Return Value  at packet-p_mul.c:367

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

register_p_mul_id

(/home/sate/Testcases/c/cve/wireshark-1.2.0/epan/dissectors/packet-p_mul.c)expand/collapse
Show more  
 349  static p_mul_seq_val *register_p_mul_id (packet_info *pinfo, address *addr, guint32 dstIP,
 350                                           guint8 pdu_type, guint32 message_id,
 351                                           guint16 seq_no, gint no_missing)
 352  {
 353    p_mul_seq_val *p_mul_data = NULL, *pkg_data = NULL;
 354    p_mul_id_key *p_mul_key = NULL;
 355    p_mul_ack_data *ack_data = NULL;
 356    nstime_t      addr_time = { 0, 0 }, prev_time = { 0, 0 };
 357    guint         addr_id = 0, prev_id = 0;
 358    guint16       last_found_pdu = 0;
 359    gboolean      missing_pdu = FALSE, set_address = FALSE;
 360    GHashTable   *pkg_list = NULL;
 361   
 362    if (pinfo->in_error_pkt) {
 363      /* No analysis of error packets */
 364      return NULL;
 365    }
 366   
 367    p_mul_key = se_alloc (sizeof (p_mul_id_key));
 368   
 369    if (!pinfo->fd->flags.visited &&  
 370        (pdu_type == Address_PDU || pdu_type == Data_PDU || pdu_type == Discard_Message_PDU))  
 371    {
 372      /* Try to match corresponding address PDU */
 373      p_mul_key->id = message_id;
 374      p_mul_key->seq = 0;
 375      SE_COPY_ADDRESS(&p_mul_key->addr, addr);
 376      set_address = TRUE;
 377   
 378      p_mul_data = (p_mul_seq_val *) g_hash_table_lookup (p_mul_id_hash_table, p_mul_key);
 379   
 380      if (p_mul_data) {
 381        /* Found address PDU */
 382        last_found_pdu = p_mul_data->last_found_pdu;
 383        p_mul_data->last_found_pdu = seq_no;
 384        addr_id = p_mul_data->pdu_id;
 385        addr_time = p_mul_data->pdu_time;
 386   
 387        /* Save data for last found PDU */
 388        p_mul_data->prev_pdu_id = pinfo->fd->num;
 389        p_mul_data->prev_pdu_time = pinfo->fd->abs_ts;
 390   
 391        if (pdu_type == Data_PDU && p_mul_data->msg_resend_count == 0 && last_found_pdu != seq_no - 1) {
 392          /* Data_PDU and missing previous PDU */
 393          missing_pdu = TRUE;
 394        }
 395         
 396        if (last_found_pdu) {
 397          /* Try to match previous data PDU */
 398          p_mul_key->seq = last_found_pdu;
 399          p_mul_data = (p_mul_seq_val *) g_hash_table_lookup (p_mul_id_hash_table, p_mul_key);
 400        }
 401         
 402        if (p_mul_data) {
 403          /* Found a previous PDU (Address or Data) */
 404          if (p_mul_data->prev_msg_id > 0) {
 405            prev_id = p_mul_data->prev_msg_id;
 406          } else {
 407            prev_id = p_mul_data->pdu_id;
 408          }
 409          prev_time = p_mul_data->pdu_time;
 410        }
 411      } else if (pdu_type == Address_PDU) {
 412        addr_id = pinfo->fd->num;
 413        addr_time = pinfo->fd->abs_ts;
 414      }
 415    }
 416   
 417    pkg_list = p_get_proto_data (pinfo->fd, proto_p_mul);
 418    if (!pkg_list) {
 419      /* Never saved list for this packet, create a new */
 420      pkg_list = g_hash_table_new (NULL, NULL);
 421      p_mul_package_data_list = g_list_append (p_mul_package_data_list, pkg_list);
 422      p_add_proto_data (pinfo->fd, proto_p_mul, pkg_list);
 423    }
 424   
 425    if (!pinfo->fd->flags.visited) {
 426      p_mul_key->id = message_id;
 427      p_mul_key->seq = seq_no;
 428      if (!set_address) {
 429        SE_COPY_ADDRESS(&p_mul_key->addr, addr);
 430      }
 431      p_mul_data = (p_mul_seq_val *) g_hash_table_lookup (p_mul_id_hash_table, p_mul_key);
 432   
 433      if (p_mul_data) {
 434        if (pdu_type == Ack_PDU) {
 435          /* Only save this data if positive ack */
 436          if (no_missing == 0) {
 437            ack_data = g_hash_table_lookup (p_mul_data->ack_data, GUINT_TO_POINTER(dstIP));
 438            if (!ack_data) {
 439              /* Only save reference to first ACK */
 440              ack_data = se_alloc0 (sizeof (p_mul_ack_data));
 441              ack_data->ack_id = pinfo->fd->num;
 442              g_hash_table_insert (p_mul_data->ack_data, GUINT_TO_POINTER(dstIP), ack_data);
 443            } else {
 444              /* Only count when resending */
 445              ack_data->ack_resend_count++;
 446            }
 447          }
 448        } else {
 449          /* Message resent */
 450          p_mul_data->msg_resend_count++;
 451          p_mul_data->prev_msg_id = pinfo->fd->num;
 452          p_mul_data->prev_msg_time = p_mul_data->pdu_time;
 453          p_mul_data->pdu_time = pinfo->fd->abs_ts;
 454   
 455          if (pdu_type == Data_PDU) {
 456            p_mul_data->prev_pdu_id = prev_id;
 457            p_mul_data->prev_pdu_time = prev_time;
 458          }
 459        }
 460      } else {
 461        /* New message */
 462        p_mul_data = se_alloc0 (sizeof (p_mul_seq_val));
 463        p_mul_data->msg_type = pdu_type;
 464        if (pdu_type == Address_PDU || pdu_type == Ack_PDU) {
 465          p_mul_data->ack_data = g_hash_table_new (NULL, NULL);
 466        }
 467   
 468        if (pdu_type == Ack_PDU) {
 469          /* No matching message for this ack */
 470          ack_data = se_alloc0 (sizeof (p_mul_ack_data));
 471          ack_data->ack_id = pinfo->fd->num;
 472          g_hash_table_insert (p_mul_data->ack_data, GUINT_TO_POINTER(dstIP), ack_data);
 473        } else {
 474          p_mul_data->pdu_id = pinfo->fd->num;
 475          p_mul_data->pdu_time = pinfo->fd->abs_ts;
 476          p_mul_data->addr_id = addr_id;
 477          p_mul_data->addr_time = addr_time;
 478          p_mul_data->first_msg_time = pinfo->fd->abs_ts;
 479           
 480          if (pdu_type == Data_PDU && !missing_pdu) {
 481            p_mul_data->prev_pdu_id = prev_id;
 482            p_mul_data->prev_pdu_time = prev_time;
 483          }
 484   
 485          g_hash_table_insert (p_mul_id_hash_table, p_mul_key, p_mul_data);
 486        }
 487      }
 488   
 489      /* Copy the current package data to the frame */
 490      pkg_data = se_alloc (sizeof (p_mul_seq_val));
 491      *pkg_data = *p_mul_data;
 492      if (p_mul_data->ack_data) {
 493        /* Copy the hash table for ack data */
 494        pkg_data->ack_data = g_hash_table_new (NULL, NULL);
 495        g_hash_table_foreach (p_mul_data->ack_data, (GHFunc) copy_hashtable_data, pkg_data->ack_data);
 496      }
 497      g_hash_table_insert (pkg_list, GUINT_TO_POINTER(message_id), pkg_data);
 498    } else {
 499      /* Fetch last values from data saved in packet */
 500      pkg_data = g_hash_table_lookup (pkg_list, GUINT_TO_POINTER(message_id));
 501    }
 502   
 503    DISSECTOR_ASSERT (pkg_data);
 504    return pkg_data;
 505  }
Show more  




Change Warning 5422.35644 : Ignored Return Value

Priority:
State:
Finding:
Owner:
Note: