Text   |  XML   |  ReML   |   Visible Warnings:

Ignored Return Value  at packet-giop.c:3512

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

dissect_giop_request_1_2

(/home/sate/Testcases/c/cve/wireshark-1.2.0/epan/dissectors/packet-giop.c)expand/collapse
Show more  
 3487  dissect_giop_request_1_2 (tvbuff_t * tvb, packet_info * pinfo,
 3488                          proto_tree * tree,
 3489                          MessageHeader * header, gboolean stream_is_big_endian)
 3490  {
 3491    guint32 offset = 0;
 3492    guint32 request_id;
 3493    guint32 len = 0;
 3494    guint8 response_flags;
 3495    gchar *reserved;
 3496    gchar *operation = NULL;
 3497    proto_tree *request_tree = NULL;
 3498    proto_item *tf;
 3499    gboolean exres = FALSE;               /* result of trying explicit dissectors */
 3500   
 3501    guint32 objkey_len = 0;       /* object key length */
 3502    gchar *objkey = NULL;         /* object key sequence */
 3503    gchar *repoid = NULL;         /* from object key lookup in objkey hash */
 3504   
 3505    if (tree)
 3506      {
 3507        tf = proto_tree_add_text (tree, tvb, offset, -1,
 3508                                  "General Inter-ORB Protocol Request");
 3509        request_tree = proto_item_add_subtree (tf, ett_giop_reply);
 3510      }
 3511   
 3512    request_id = get_CDR_ulong(tvb, &offset, stream_is_big_endian,GIOP_HEADER_SIZE);
 3513    if (check_col(pinfo->cinfo, COL_INFO))
 3514      {
 3515        col_append_fstr(pinfo->cinfo, COL_INFO, " id=%u", request_id);
 3516      }
 3517    if (request_tree)
 3518      {
 3519        proto_tree_add_uint (request_tree, hf_giop_req_id, tvb, offset-4, 4, request_id);
 3520      }
 3521   
 3522    response_flags = tvb_get_guint8( tvb, offset );
 3523    offset += 1;
 3524    if (request_tree)
 3525      {
 3526        proto_tree_add_text (request_tree, tvb, offset-1, 1,
 3527                             "Response flags: %s (%u)",
 3528                                  val_to_str(response_flags, response_flags_vals, "(0x%x)"),
 3529                                  response_flags);
 3530      }
 3531   
 3532    get_CDR_octet_seq( tvb, &reserved, &offset, 3);
 3533    if (request_tree)
 3534     {
 3535       proto_tree_add_text (request_tree, tvb, offset-3, 3,
 3536             "Reserved: %x %x %x", reserved[0], reserved[1], reserved[2]);
 3537     }
 3538    g_free(reserved);
 3539   
 3540    dissect_target_address(tvb, pinfo, &offset, request_tree, stream_is_big_endian,
 3541                           &objkey_len, &objkey);
 3542    if (objkey) {
 3543      repoid = get_repoid_from_objkey(giop_objkey_hash, objkey, objkey_len);
 3544      g_free(objkey);
 3545    }
 3546   
 3547    /* length of operation string */
 3548    len = get_CDR_string(tvb, &operation, &offset, stream_is_big_endian,GIOP_HEADER_SIZE);
 3549    if(tree)
 3550    {
 3551           proto_tree_add_text (request_tree, tvb, offset - len - 4, 4,
 3552           /**/                 "Operation length: %u", len);
 3553    }
 3554   
 3555    if( len > 0)
 3556    {
 3557         if (check_col(pinfo->cinfo, COL_INFO))
 3558         {
 3559           col_append_fstr(pinfo->cinfo, COL_INFO, ": op=%s", operation);
 3560         }
 3561         if(request_tree)
 3562         {
 3563           proto_tree_add_string (request_tree,hf_giop_req_operation, tvb, offset - len, len, operation);
 3564   
 3565         }
 3566   
 3567    }
 3568   
 3569    /*
 3570     * Register a cleanup function in case on of our tvbuff accesses 
 3571     * throws an exception. We need to clean up operation.
 3572     */
 3573    CLEANUP_PUSH(g_free, operation);
 3574   
 3575    /*
 3576     * Decode IOP::ServiceContextList
 3577     */
 3578   
 3579    decode_ServiceContextList(tvb, request_tree, &offset,  stream_is_big_endian, GIOP_HEADER_SIZE);
 3580   
 3581    /*
 3582     * GIOP 1.2 Request body must fall on an 8 octet alignment, taking into
 3583     *  we are in a new tvbuff, GIOP_HEADER_SIZE octets from the
 3584     * GIOP octet stream start.
 3585     */
 3586   
 3587    if (tvb_reported_length_remaining(tvb, offset) > 0)
 3588    {
 3589      set_new_alignment(&offset, GIOP_HEADER_SIZE, 8);
 3590    }
 3591   
 3592    /*
 3593     * Save FN,reqid,and operation for later. Add sub_handle later.
 3594     * But only if user is NOT clicking.
 3595     */
 3596   
 3597    if (! pinfo->fd->flags.visited)
 3598      giop_complete_request_list = insert_in_comp_req_list(giop_complete_request_list,pinfo->fd->num,
 3599                                                           request_id,operation,NULL);
 3600   
 3601    /*
 3602     *
 3603     * Call sub dissector.
 3604     * First try an find a explicit sub_dissector, then if that 
 3605     * fails, try the heuristic method.
 3606     */
 3607   
 3608    if(repoid) {
 3609      exres = try_explicit_giop_dissector(tvb,pinfo,tree,&offset,header,operation,repoid);
 3610    }
 3611   
 3612    /* Only call heuristic if no explicit dissector was found */
 3613   
 3614    if (! exres) {
 3615      exres = try_heuristic_giop_dissector(tvb,pinfo,tree,&offset,header,operation);
 3616    }
 3617   
 3618    if (!exres && !strcmp(giop_op_is_a, operation) && request_tree) {
 3619      gchar *type_id;
 3620      len = get_CDR_string(tvb, &type_id, &offset, stream_is_big_endian, 0);
 3621      proto_tree_add_text(request_tree, tvb, offset - len - 4, 4,
 3622                          "Type Id length: %d", len);
 3623      proto_tree_add_text(request_tree, tvb, offset - len, len,
 3624                          "Type Id: %s", type_id);
 3625    }
 3626   
 3627    if(! exres) {
 3628      gint stub_length = tvb_reported_length_remaining(tvb, offset);
 3629          if (stub_length >0)
 3630                  proto_tree_add_text(request_tree, tvb, offset, -1,
 3631                          "Stub data (%d byte%s)", stub_length,
 3632                          plurality(stub_length, "", "s"));
 3633    }
 3634   
 3635    /*
 3636     * We're done with operation, so we can call the cleanup handler to free 
 3637     * it, and then pop the cleanup handler.
 3638     */
 3639    CLEANUP_CALL_AND_POP;
 3640  }
Show more  




Change Warning 12513.35628 : Ignored Return Value

Priority:
State:
Finding:
Owner:
Note: