NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kern/46697



The following reply was made to PR kern/46697; it has been noted by GNATS.

From: Patrick Welche <prlw1%cam.ac.uk@localhost>
To: gnats-bugs%netbsd.org@localhost
Cc: 
Subject: Re: kern/46697
Date: Fri, 29 Apr 2016 17:17:28 +0100

 FWIW according to your coredump, the problem is at
 
 src/sys/dist/ipf/netinet/fil.c:759
 
    750                  case ICMP6_DST_UNREACH :
    751                  case ICMP6_PACKET_TOO_BIG :
    752                  case ICMP6_TIME_EXCEEDED :
    753                  case ICMP6_PARAM_PROB :
    754                          fin->fin_flx |= FI_ICMPERR;
    755                          minicmpsz = ICMP6ERR_IPICMPHLEN - sizeof(ip6_t);
    756                          if (fin->fin_plen < ICMP6ERR_IPICMPHLEN)
    757                                  break;
    758  
    759                          if (M_LEN(fin->fin_m) < fin->fin_plen) {
    760                                  if (fr_coalesce(fin) != 1)
    761                                          return;
    762                          }
 
 where fin->fin_m = 0x0, so M_LEN(fin->fin_m) dereferences 0.
 
 (gdb) print *fin
 $1 = {fin_ifp = 0xfffffe803dcca008, fin_fi = {fi_v = 6, fi_xx = 0, fi_tos = 0, 
     fi_ttl = 126, fi_p = 58, fi_optmsk = 8, fi_src = {i6 = {1807811104, 11110, 
         0, 728132545}, in4 = {s_addr = 1807811104}, in6 = {__u6_addr = {
           __u6_addr8 = " \002\301kf+\000\000\000\000\000\000\301kf+", 
           __u6_addr16 = {544, 27585, 11110, 0, 0, 0, 27585, 11110}, 
           __u6_addr32 = {1807811104, 11110, 0, 728132545}}}, vptr = {
         0x2b666bc10220, 0x2b666bc100000000}, lptr = {0x2b666bc10220, 
         0x2b666bc100000000}, i6un = {type = 544, subtype = 27585, 
         label = "f+\000\000\000\000\000\000\301kf+"}}, fi_dst = {i6 = {288, 
         4252628318, 2184217380, 1280175939}, in4 = {s_addr = 288}, in6 = {
         __u6_addr = {__u6_addr8 = " \001\000\000^\365y\375$0\202CïML", 
           __u6_addr16 = {288, 0, 62814, 64889, 33572, 33328, 61251, 19533}, 
           __u6_addr32 = {288, 4252628318, 2184217380, 1280175939}}}, vptr = {
         0xfd79f55e00000120, 0x4c4def4382308324}, lptr = {0xfd79f55e00000120, 
         0x4c4def4382308324}, i6un = {type = 288, subtype = 0, 
         label = "^\365y\375$0\202CïML"}}, fi_secmsk = 0, fi_auth = 0, 
     fi_flx = 537465860, fi_tcpmsk = 0, fi_res1 = 0}, fin_dat = {fid_16 = {259, 
       0}, fid_32 = 259}, fin_out = 1, fin_rev = 0, fin_hlen = 40, 
   fin_tcpf = 0 '\000', fin_icode = 0 '\000', fin_rule = 4294967295, 
   fin_group = "\377", '\000' <repeats 14 times>, fin_fr = 0x0, 
   fin_dp = 0xfffffe802e81806e, fin_dlen = 53244, fin_plen = 53292, 
   fin_ipoff = 0, fin_id = 96, fin_off = 0, fin_depth = 0, fin_error = 51, 
   fin_cksum = 0, fin_pktnum = 0, fin_nattag = 0x0, 
   fin_exthdr = 0xfffffe802e818066, fin_ip = 0xfffffe802e81803e, fin_mp = 0x0, 
   fin_m = 0x0}
 


Home | Main Index | Thread Index | Old Index