/* * netsniff-ng - the packet sniffing beast * Copyright 2012 Markus Amend , Deutsche Flugsicherung GmbH * Subject to the GPL, version 2. * * IPv6 Destination Options Header described in RFC2460 */ #include #include #include /* for ntohs() */ #include "proto.h" #include "dissector_eth.h" #include "built_in.h" #include "pkt_buff.h" struct dest_optshdr { uint8_t h_next_header; uint8_t hdr_len; } __packed; static void dissect_opt_dest(struct pkt_buff *pkt __maybe_unused, ssize_t *opt_len) { /* Have to been upgraded. * http://tools.ietf.org/html/rfc2460#section-4.2 * Look also for proto_ipv6_hop_by_hop.h, it needs * dissect_opt(), too. */ if (*opt_len) tprintf(", Option(s) recognized "); /* If adding dissector reduce opt_len for each using of pkt_pull * to the same size. */ } static void dest_opts(struct pkt_buff *pkt) { uint16_t hdr_ext_len; ssize_t opt_len; struct dest_optshdr *dest_ops; dest_ops = (struct dest_optshdr *) pkt_pull(pkt, sizeof(*dest_ops)); if (dest_ops == NULL) return; /* Total Header Length in Bytes */ hdr_ext_len = (dest_ops->hdr_len + 1) * 8; /* Options length in Bytes */ opt_len = hdr_ext_len - sizeof(*dest_ops); tprintf("\t [ Destination Options "); tprintf("NextHdr (%u), ", dest_ops->h_next_header); if (opt_len > pkt_len(pkt) || opt_len < 0) { tprintf("HdrExtLen (%u, %u Bytes, %s)", dest_ops->hdr_len, hdr_ext_len, colorize_start_full(black, red) "invalid" colorize_end()); return; } tprintf("HdrExtLen (%u, %u Bytes)", dest_ops->hdr_len, hdr_ext_len); dissect_opt_dest(pkt, &opt_len); tprintf(" ]\n"); pkt_pull(pkt, opt_len); pkt_set_proto(pkt, ð_lay3, dest_ops->h_next_header); } static void dest_opts_less(struct pkt_buff *pkt) { uint16_t hdr_ext_len; ssize_t opt_len; struct dest_optshdr *dest_ops; dest_ops = (struct dest_optshdr *) pkt_pull(pkt, sizeof(*dest_ops)); if (dest_ops == NULL) return; /* Total Header Length in Bytes */ hdr_ext_len = (dest_ops->hdr_len + 1) * 8; /* Options length in Bytes */ opt_len = hdr_ext_len - sizeof(*dest_ops); if (opt_len > pkt_len(pkt) || opt_len < 0) return; tprintf(" Dest Ops"); pkt_pull(pkt, opt_len); pkt_set_proto(pkt, ð_lay3, dest_ops->h_next_header); } struct protocol ipv6_dest_opts_ops = { .key = 0x3C, .print_full = dest_opts, .print_less = dest_opts_less, }; t type='hidden' name='id' value='fff4b87e594ad3d2e4f51e8d3d86a6f9d3d8b654'/>
='30'>30
AgeCommit message (Expand)AuthorFilesLines
space:
mode:
authorVincent <vincent.stehle@laposte.net>2017-01-30 15:06:43 +0100
committerDavid S. Miller <davem@davemloft.net>2017-01-31 13:07:40 -0500
commitc73e44269369e936165f0f9b61f1f09a11dae01c (patch)
treee2188e900ba06302f8ed2746cb07edd3efbc5c35 /drivers/usb/README
parent040587af31228d82c52267f717c9fcdb65f36335 (diff)
net: thunderx: avoid dereferencing xcv when NULL
This fixes the following smatch and coccinelle warnings: drivers/net/ethernet/cavium/thunder/thunder_xcv.c:119 xcv_setup_link() error: we previously assumed 'xcv' could be null (see line 118) [smatch] drivers/net/ethernet/cavium/thunder/thunder_xcv.c:119:16-20: ERROR: xcv is NULL but dereferenced. [coccinelle] Fixes: 6465859aba1e66a5 ("net: thunderx: Add RGMII interface type support") Signed-off-by: Vincent Stehlé <vincent.stehle@laposte.net> Cc: Sunil Goutham <sgoutham@cavium.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/usb/README')