Author: glebius
Date: Tue Jul 28 09:16:54 2015
New Revision: 285941
URL: https://svnweb.freebsd.org/changeset/base/285941

Log:
  Merge r283061, r283063: don't dereference NULL is pf_get_mtag() fails.
  
  PR:           200222

Modified:
  stable/10/sys/netpfil/pf/pf.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/netpfil/pf/pf.c
==============================================================================
--- stable/10/sys/netpfil/pf/pf.c       Tue Jul 28 09:13:55 2015        
(r285940)
+++ stable/10/sys/netpfil/pf/pf.c       Tue Jul 28 09:16:54 2015        
(r285941)
@@ -5912,13 +5912,14 @@ done:
                    ((pd.pf_mtag = pf_get_mtag(m)) == NULL)) {
                        action = PF_DROP;
                        REASON_SET(&reason, PFRES_MEMORY);
+               } else {
+                       if (pqid || (pd.tos & IPTOS_LOWDELAY))
+                               pd.pf_mtag->qid = r->pqid;
+                       else
+                               pd.pf_mtag->qid = r->qid;
+                       /* Add hints for ecn. */
+                       pd.pf_mtag->hdr = h;
                }
-               if (pqid || (pd.tos & IPTOS_LOWDELAY))
-                       pd.pf_mtag->qid = r->pqid;
-               else
-                       pd.pf_mtag->qid = r->qid;
-               /* add hints for ecn */
-               pd.pf_mtag->hdr = h;
 
        }
 #endif /* ALTQ */
@@ -5957,9 +5958,11 @@ done:
                                        log = 1;
                                        DPFPRINTF(PF_DEBUG_MISC,
                                            ("pf: failed to allocate tag\n"));
+                               } else {
+                                       pd.pf_mtag->flags |=
+                                           PF_FASTFWD_OURS_PRESENT;
+                                       m->m_flags &= ~M_FASTFWD_OURS;
                                }
-                               pd.pf_mtag->flags |= PF_FASTFWD_OURS_PRESENT;
-                               m->m_flags &= ~M_FASTFWD_OURS;
                        }
                        ip_divert_ptr(*m0, dir ==  PF_IN ? DIR_IN : DIR_OUT);
                        *m0 = NULL;
@@ -6341,13 +6344,14 @@ done:
                    ((pd.pf_mtag = pf_get_mtag(m)) == NULL)) {
                        action = PF_DROP;
                        REASON_SET(&reason, PFRES_MEMORY);
+               } else {
+                       if (pd.tos & IPTOS_LOWDELAY)
+                               pd.pf_mtag->qid = r->pqid;
+                       else
+                               pd.pf_mtag->qid = r->qid;
+                       /* Add hints for ecn. */
+                       pd.pf_mtag->hdr = h;
                }
-               if (pd.tos & IPTOS_LOWDELAY)
-                       pd.pf_mtag->qid = r->pqid;
-               else
-                       pd.pf_mtag->qid = r->qid;
-               /* add hints for ecn */
-               pd.pf_mtag->hdr = h;
        }
 #endif /* ALTQ */
 
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to