Changeset cdcaef6


Ignore:
Timestamp:
04/09/08 11:07:00 (14 years ago)
Author:
Perry Lorier <perry@…>
Branches:
4.0.1-hotfixes, cachetimestamps, develop, dpdk-ndag, etsilive, getfragoff, help, libtrace4, master, ndag_format, pfring, rc-4.0.1, rc-4.0.2, rc-4.0.3, rc-4.0.4, ringdecrementfix, ringperformance, ringtimestampfixes
Children:
0bfd4a0
Parents:
de3d203
Message:
  • Add an error for an invalid snaplen
  • Use packet->buffer, not packet->payload when reading from a linux native interface
Location:
lib
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • lib/format_linux.c

    rf0fb38f rcdcaef6  
    8787        FORMAT(libtrace->format_data)->fd = -1;
    8888        FORMAT(libtrace->format_data)->promisc = -1;
    89         FORMAT(libtrace->format_data)->snaplen = 65536;
     89        FORMAT(libtrace->format_data)->snaplen = LIBTRACE_PACKET_BUFSIZE;
    9090        FORMAT(libtrace->format_data)->filter = NULL;
    9191        FORMAT(libtrace->format_data)->stats_valid = 0;
     
    155155                mreq.mr_ifindex = addr.sll_ifindex;
    156156                mreq.mr_type = PACKET_MR_PROMISC;
    157                 setsockopt(FORMAT(libtrace->format_data)->fd,
     157                if (setsockopt(FORMAT(libtrace->format_data)->fd,
    158158                                SOL_PACKET,
    159159                                PACKET_ADD_MEMBERSHIP,
    160160                                &mreq,
    161                                 socklen);
     161                                socklen)==-1) {
     162                        perror("setsockopt(PROMISC)");
     163                }
    162164        }
    163165
     
    377379        if (!packet->buffer || packet->buf_control == TRACE_CTRL_EXTERNAL) {
    378380                packet->buffer = malloc((size_t)LIBTRACE_PACKET_BUFSIZE);
     381                if (!packet->buffer) {
     382                        perror("Cannot allocate buffer");
     383                }
    379384        }
    380385
     
    399404        msghdr.msg_flags = 0;
    400405
    401         iovec.iov_base = (void*)packet->payload;
     406        iovec.iov_base = (void*)packet->buffer;
    402407        iovec.iov_len = snaplen;
    403408
  • lib/trace.c

    rde3d203 rcdcaef6  
    547547                        if (trace_is_err(libtrace)) {
    548548                                err = trace_get_err(libtrace);
     549                        }
     550                        if (*(int*)value<0
     551                                || *(int*)value>LIBTRACE_PACKET_BUFSIZE) {
     552                                trace_set_err(libtrace,TRACE_ERR_BAD_STATE,
     553                                        "Invalid snap length");
    549554                        }
    550555                        libtrace->snaplen=*(int*)value;
Note: See TracChangeset for help on using the changeset viewer.