Ignore:
Timestamp:
11/16/17 10:37:56 (3 years ago)
Author:
Robert A Zeh <razeh@…>
Branches:
cachetimestamps, develop, dpdk-ndag, etsilive, master, rc-4.0.3, rc-4.0.4, ringdecrementfix, ringperformance
Children:
9726d0e
Parents:
be32cc7
git-author:
Robert A Zeh <robert.a.zeh@…> (11/16/17 10:36:16)
git-committer:
Robert A Zeh <razeh@…> (11/16/17 10:37:56)
Message:

Add TRACE_ERR_WANDIO_FAILED for wandio error reporting.

Passing an errcode of 0 to trace_set_err triggers the assertion at
format_helper.c:290, making the error unrecoverable for the calling
code. This happens when the wandio layer encounters an error while
errno is still 0 (for example, an incomplete pcap packet).

To make the error recoverable, pass in TRACE_ERR_WANDIO_FAILED instead
of errno.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lib/format_pcapng.c

    red5b2ce r2c457ec  
    330330                err = wandio_read(libtrace->io, buf, nextread);
    331331                if (err < 0) {
    332                         trace_set_err(libtrace, errno,
     332                        trace_set_err(libtrace, TRACE_ERR_WANDIO_FAILED,
    333333                                "Reading section header options");
    334334                        return -1;
     
    351351        err = wandio_read(libtrace->io, body, to_read);
    352352        if (err < 0) {
    353                 trace_set_err(libtrace, errno,
     353                trace_set_err(libtrace, TRACE_ERR_WANDIO_FAILED,
    354354                        "Failed to read pcapng interface options");
    355355                return err;
     
    444444
    445445        if (err < 0) {
    446                 trace_set_err(libtrace, errno,
     446                trace_set_err(libtrace, TRACE_ERR_WANDIO_FAILED,
    447447                        "Reading pcapng section header block");
    448448                return -1;
     
    519519
    520520        if (err < 0) {
    521                 trace_set_err(libtrace, errno,
     521                trace_set_err(libtrace, TRACE_ERR_WANDIO_FAILED,
    522522                        "Reading pcapng interface header block");
    523523                return -1;
     
    626626
    627627        if (err < 0) {
    628                 trace_set_err(libtrace, errno, "reading pcapng name resolution block");
     628                trace_set_err(libtrace, TRACE_ERR_WANDIO_FAILED, "reading pcapng name resolution block");
    629629                return -1;
    630630        }
     
    682682
    683683        if (err < 0) {
    684                 trace_set_err(libtrace, errno, "reading pcapng custom block");
     684                trace_set_err(libtrace, TRACE_ERR_WANDIO_FAILED, "reading pcapng custom block");
    685685                return -1;
    686686        }
     
    740740
    741741        if (err < 0) {
    742                 trace_set_err(libtrace, errno, "reading pcapng interface stats");
     742                trace_set_err(libtrace, TRACE_ERR_WANDIO_FAILED, "reading pcapng interface stats");
    743743                return -1;
    744744        }
     
    861861
    862862        if (err < 0) {
    863                 trace_set_err(libtrace, errno, "reading pcapng simple packet");
     863                trace_set_err(libtrace, TRACE_ERR_WANDIO_FAILED, "reading pcapng simple packet");
    864864                return -1;
    865865        }
     
    930930
    931931        if (err < 0) {
    932                 trace_set_err(libtrace, errno, "reading pcapng enhanced packet");
     932                trace_set_err(libtrace, TRACE_ERR_WANDIO_FAILED, "reading pcapng enhanced packet");
    933933                return -1;
    934934        }
     
    10391039                err = wandio_peek(libtrace->io, &peeker, sizeof(peeker));
    10401040                if (err < 0) {
    1041                         trace_set_err(libtrace, errno, "reading pcapng packet");
     1041                        trace_set_err(libtrace, TRACE_ERR_WANDIO_FAILED, "reading pcapng packet");
    10421042                        return -1;
    10431043                }
     
    10481048
    10491049                if (err < (int)sizeof(struct pcapng_peeker)) {
    1050                         trace_set_err(libtrace, errno, "Incomplete pcapng block");
     1050                        trace_set_err(libtrace, TRACE_ERR_WANDIO_FAILED, "Incomplete pcapng block");
    10511051                        return -1;
    10521052                }
Note: See TracChangeset for help on using the changeset viewer.