Fix calculation of pading for if_filter_str.

svn path=/trunk/; revision=41351
This commit is contained in:
Anders Broman 2012-03-05 09:21:36 +00:00
parent 995e10ef36
commit a20cfcc745
2 changed files with 4 additions and 4 deletions

View File

@ -492,7 +492,7 @@ libpcap_write_interface_description_block(FILE *fp,
} }
/* write filter string if applicable /* write filter string if applicable
* We only write version 1 of the fileter, libpcap string * We only write version 1 of the filter, libpcap string
*/ */
if ((filter != NULL) && (strlen(filter) > 0) && (strlen(filter) < G_MAXUINT16)) { if ((filter != NULL) && (strlen(filter) > 0) && (strlen(filter) < G_MAXUINT16)) {
option.type = IDB_FILTER; option.type = IDB_FILTER;
@ -502,8 +502,8 @@ libpcap_write_interface_description_block(FILE *fp,
/* The first byte of the Option Data keeps a code of the filter used, 0 = lipbpcap filter string */ /* The first byte of the Option Data keeps a code of the filter used, 0 = lipbpcap filter string */
WRITE_DATA(fp, &padding, 1, *bytes_written, err); WRITE_DATA(fp, &padding, 1, *bytes_written, err);
WRITE_DATA(fp, filter, strlen(filter) + 1, *bytes_written, err); WRITE_DATA(fp, filter, strlen(filter) + 1, *bytes_written, err);
if ((strlen(filter) + 1) % 4) { if ((strlen(filter) + 2) % 4) {
WRITE_DATA(fp, &padding, 4 - (strlen(filter) + 1) % 4 , *bytes_written, err); WRITE_DATA(fp, &padding, 4 - (strlen(filter) + 2) % 4 , *bytes_written, err);
} }
} }

View File

@ -834,7 +834,7 @@ pcapng_read_if_descr_block(FILE_T fh, pcapng_block_header_t *bh, pcapng_t *pn,
*/ */
if (option_content[0] == 0){ if (option_content[0] == 0){
wblock->data.if_descr.if_filter_str = g_strndup(option_content+1, oh.option_length-1); wblock->data.if_descr.if_filter_str = g_strndup(option_content+1, oh.option_length-1);
pcapng_debug1("pcapng_read_if_descr_block: if_filter_str %s", wblock->data.if_descr.if_filter_str); pcapng_debug2("pcapng_read_if_descr_block: if_filter_str %s oh.option_length %u", wblock->data.if_descr.if_filter_str, oh.option_length);
}else if(option_content[0] == 1) { }else if(option_content[0] == 1) {
wblock->data.if_descr.bpf_filter_len = oh.option_length-1; wblock->data.if_descr.bpf_filter_len = oh.option_length-1;
wblock->data.if_descr.if_filter_bpf_bytes = g_malloc(oh.option_length-1); wblock->data.if_descr.if_filter_bpf_bytes = g_malloc(oh.option_length-1);