Ignore:
Timestamp:
May 12, 2014, 8:58:38 PM (11 years ago)
Author:
Silvan Scherrer
Message:

Samba 3.6: updated vendor to latest version

Location:
vendor/current/source4/librpc/rpc
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • vendor/current/source4/librpc/rpc/dcerpc.c

    r740 r860  
    657657        if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
    658658                return ndr_map_error2ntstatus(ndr_err);
     659        }
     660
     661        if (pkt->frag_length != blob->length) {
     662                return NT_STATUS_RPC_PROTOCOL_ERROR;
    659663        }
    660664
  • vendor/current/source4/librpc/rpc/dcerpc_smb.c

    r740 r860  
    161161                uint32_t frag_length = blob->length>=16?
    162162                        dcerpc_get_frag_length(blob):0x2000;
     163
     164                if (frag_length < state->data.length) {
     165                        talloc_free(state);
     166                        return NT_STATUS_RPC_PROTOCOL_ERROR;
     167                }
     168
    163169                state->received = blob->length;
    164170                state->data = data_blob_talloc(state, NULL, frag_length);
  • vendor/current/source4/librpc/rpc/dcerpc_smb2.c

    r740 r860  
    171171        if (state->data.length >= 16) {
    172172                uint16_t frag_length = dcerpc_get_frag_length(&state->data);
     173
     174                if (frag_length < state->data.length) {
     175                        talloc_free(state);
     176                        return NT_STATUS_RPC_PROTOCOL_ERROR;
     177                }
     178
    173179                io.in.length = frag_length - state->data.length;
    174180        } else {
  • vendor/current/source4/librpc/rpc/dcerpc_sock.c

    r740 r860  
    103103        }
    104104        *size = dcerpc_get_frag_length(&blob);
     105        if (*size < blob.length) {
     106                /*
     107                 * something is wrong, let the caller deal with it
     108                 */
     109                *size = blob.length;
     110        }
    105111        if (*size > blob.length) {
    106112                return STATUS_MORE_ENTRIES;
Note: See TracChangeset for help on using the changeset viewer.