(file) Return to dcerpc.c CVS log (file) (dir) Up to [cvs] / snort / src / dynamic-preprocessors / dcerpc

Diff for /snort/src/dynamic-preprocessors/dcerpc/dcerpc.c between version 1.9.2.1 and 1.9.2.2

version 1.9.2.1, 2007/02/02 15:17:11 version 1.9.2.2, 2007/02/17 20:36:46
Line 25 
Line 25 
  
 #include "debug.h" #include "debug.h"
 #include "sf_snort_packet.h" #include "sf_snort_packet.h"
   #include "bounds.h"
  
 #include "smb_structs.h" #include "smb_structs.h"
 #include "snort_dcerpc.h" #include "snort_dcerpc.h"
Line 295 
Line 296 
 { {
     DCERPC_REQ      fake_req;     DCERPC_REQ      fake_req;
     u_int16_t       smb_hdr_len = 0;     u_int16_t       smb_hdr_len = 0;
     u_int16_t       dcerpc_req_len= sizeof(DCERPC_REQ);      unsigned int    dcerpc_req_len= sizeof(DCERPC_REQ);
       int             ret;
  
     if ( smb_hdr )     if ( smb_hdr )
     {     {
Line 321 
Line 323 
  
     if ( smb_hdr )     if ( smb_hdr )
     {     {
         memcpy(_dpd.altBuffer, _dcerpc_pkt->payload, sizeof(NBT_HDR));          ret = SafeMemcpy(_dpd.altBuffer, _dcerpc_pkt->payload, sizeof(NBT_HDR),
                                                       _dpd.altBuffer, _dpd.altBuffer + _dpd.altBufferLen);
           if ( ret == 0 )
           {
               DEBUG_WRAP(_dpd.debugMsg(DEBUG_DCERPC, "Failed to copy DCERPC header, skipping DCERPC reassembly."));
               goto dcerpc_frag_free;
           }
         _dcerpc_pkt->normalized_payload_size = sizeof(NBT_HDR);         _dcerpc_pkt->normalized_payload_size = sizeof(NBT_HDR);
         memcpy(_dpd.altBuffer + _dcerpc_pkt->normalized_payload_size, smb_hdr, smb_hdr_len);          ret = SafeMemcpy(_dpd.altBuffer + _dcerpc_pkt->normalized_payload_size, smb_hdr, smb_hdr_len,
                                                       _dpd.altBuffer, _dpd.altBuffer + _dpd.altBufferLen);
           if ( ret == 0 )
           {
               DEBUG_WRAP(_dpd.debugMsg(DEBUG_DCERPC, "Failed to copy DCERPC header, skipping DCERPC reassembly."));
               goto dcerpc_frag_free;
           }
         _dcerpc_pkt->normalized_payload_size += smb_hdr_len;         _dcerpc_pkt->normalized_payload_size += smb_hdr_len;
     }     }
  
     memcpy(_dpd.altBuffer + _dcerpc_pkt->normalized_payload_size, &fake_req, dcerpc_req_len);      ret = SafeMemcpy(_dpd.altBuffer + _dcerpc_pkt->normalized_payload_size, &fake_req, dcerpc_req_len,
                                                       _dpd.altBuffer, _dpd.altBuffer + _dpd.altBufferLen);
       if ( ret == 0 )
       {
           DEBUG_WRAP(_dpd.debugMsg(DEBUG_DCERPC, "Failed to copy DCERPC header, skipping DCERPC reassembly."));
           goto dcerpc_frag_free;
       }
     _dcerpc_pkt->normalized_payload_size += dcerpc_req_len;     _dcerpc_pkt->normalized_payload_size += dcerpc_req_len;
  
     /* Copy data into buffer */     /* Copy data into buffer */
     memcpy(_dpd.altBuffer + _dcerpc_pkt->normalized_payload_size, _dcerpc->dcerpc_req_buf, _dcerpc->dcerpc_req_buf_len);      ret = SafeMemcpy(_dpd.altBuffer + _dcerpc_pkt->normalized_payload_size, _dcerpc->dcerpc_req_buf, _dcerpc->dcerpc_req_buf_len,
                                                       _dpd.altBuffer, _dpd.altBuffer + _dpd.altBufferLen);
       if ( ret == 0 )
       {
           DEBUG_WRAP(_dpd.debugMsg(DEBUG_DCERPC, "Failed to copy DCERPC data, skipping DCERPC reassembly."));
           goto dcerpc_frag_free;
       }
     _dcerpc_pkt->normalized_payload_size += _dcerpc->dcerpc_req_buf_len;     _dcerpc_pkt->normalized_payload_size += _dcerpc->dcerpc_req_buf_len;
  
     _dcerpc_pkt->flags |= FLAG_ALT_DECODE;     _dcerpc_pkt->flags |= FLAG_ALT_DECODE;
Line 339 
Line 365 
     if ( _debug_print )     if ( _debug_print )
         PrintBuffer("DCE/RPC reassembled fragment", (u_int8_t *)_dpd.altBuffer, _dcerpc_pkt->normalized_payload_size);         PrintBuffer("DCE/RPC reassembled fragment", (u_int8_t *)_dpd.altBuffer, _dcerpc_pkt->normalized_payload_size);
  
   dcerpc_frag_free:
     /* Get ready for next write */     /* Get ready for next write */
     DCERPC_FragFree(_dcerpc->dcerpc_req_buf, _dcerpc->dcerpc_req_buf_size);     DCERPC_FragFree(_dcerpc->dcerpc_req_buf, _dcerpc->dcerpc_req_buf_size);
     _dcerpc->dcerpc_req_buf = NULL;     _dcerpc->dcerpc_req_buf = NULL;


Legend:
Removed from v.1.9.2.1  
changed lines
  Added in v.1.9.2.2

snort-team@sourcefire.com