diff --git a/bgpd/bgp_aspath.c b/bgpd/bgp_aspath.c
index 5a73eef..cf93042 100644
--- a/bgpd/bgp_aspath.c
+++ b/bgpd/bgp_aspath.c
@@ -698,8 +698,12 @@
       size_t seg_size;
       
       /* softly softly, get the header first on its own */
-      if (length >= AS_HEADER_SIZE)
+      if (length < AS_HEADER_SIZE)
         {
+          assegment_free_all (head);
+          return NULL;
+        }
+      
       segh.type = stream_getc (s);
       segh.length = stream_getc (s);
       
@@ -710,26 +714,23 @@
 	zlog_debug ("[AS4SEG] Parse aspath segment: got type %d, length %d",
                     segh.type, segh.length);
       
-          switch (segh.type)
-          {
-            case AS_SEQUENCE:
-            case AS_SET:
-              break ;
+      switch (segh.type)
+        {
+          case AS_SEQUENCE:
+          case AS_SET:
+            break ;
 
-            case AS_CONFED_SEQUENCE:
-            case AS_CONFED_SET:
-              if (!as4_path)
-                break ;
+          case AS_CONFED_SEQUENCE:
+          case AS_CONFED_SET:
+            if (!as4_path)
+              break ;
               /* RFC4893 3: "invalid for the AS4_PATH attribute"            */
               /* fall through */
 
-            default:    /* reject unknown or invalid AS_PATH segment types  */
-              seg_size = 0 ;
-          } ;
+          default:    /* reject unknown or invalid AS_PATH segment types  */
+            seg_size = 0 ;
         }
-      else
-        seg_size = 0 ;
-
+     
      /* Stop now if segment is not valid (discarding anything collected to date)
       *
       * RFC4271 4.3, Path Attributes, b) AS_PATH:
@@ -738,7 +739,7 @@
            */
       if ((seg_size == 0) || (seg_size > length) || (segh.length == 0))
         {
-            assegment_free_all (head);
+          assegment_free_all (head);
           return NULL;
         }
       
diff --git a/bgpd/bgp_network.c b/bgpd/bgp_network.c
index 502f567..570cc3b 100644
--- a/bgpd/bgp_network.c
+++ b/bgpd/bgp_network.c
@@ -30,6 +30,7 @@
 #include "command.h"
 #include "privs.h"
 #include "linklist.h"
+#include "network.h"
 
 #include "bgpd/bgpd.h"
 #include "bgpd/bgp_fsm.h"
diff --git a/bgpd/bgp_packet.c b/bgpd/bgp_packet.c
index 1d6b9ee..ed2cb73 100644
--- a/bgpd/bgp_packet.c
+++ b/bgpd/bgp_packet.c
@@ -2009,7 +2009,7 @@
                    * as possible without going beyond the bounds of the entry,
                    * to maximise debug information.
                    */
-		  int ok ;
+		  int ok;
 		  memset (&orfp, 0, sizeof (struct orf_prefix));
 		  common = *p_pnt++;
 		  /* after ++: p_pnt <= p_end */
@@ -2021,11 +2021,11 @@
 		      break;
 		    }
 		  ok = ((p_end - p_pnt) >= sizeof(u_int32_t)) ;
-		  if (ok)
+		  if (!ok)
 		    {
-		  memcpy (&seq, p_pnt, sizeof (u_int32_t));
-		  p_pnt += sizeof (u_int32_t);
-		  orfp.seq = ntohl (seq);
+		      memcpy (&seq, p_pnt, sizeof (u_int32_t));
+                      p_pnt += sizeof (u_int32_t);
+                      orfp.seq = ntohl (seq);
 		    }
 		  else
 		    p_pnt = p_end ;
@@ -2063,16 +2063,17 @@
 			       inet_ntop (orfp.p.family, &orfp.p.u.prefix, buf, BUFSIZ),
 			       orfp.p.prefixlen, orfp.ge, orfp.le,
 			       ok ? "" : " MALFORMED");
-
+                  
 		  if (ok)
-		  ret = prefix_bgp_orf_set (name, afi, &orfp,
-				 (common & ORF_COMMON_PART_DENY ? 0 : 1 ),
-				 (common & ORF_COMMON_PART_REMOVE ? 0 : 1));
+		    ret = prefix_bgp_orf_set (name, afi, &orfp,
+				   (common & ORF_COMMON_PART_DENY ? 0 : 1 ),
+				   (common & ORF_COMMON_PART_REMOVE ? 0 : 1));
 
 		  if (!ok || (ret != CMD_SUCCESS))
 		    {
 		      if (BGP_DEBUG (normal, NORMAL))
-			zlog_debug ("%s Received misformatted prefixlist ORF. Remove All pfxlist", peer->host);
+			zlog_debug ("%s Received misformatted prefixlist ORF."
+			            " Remove All pfxlist", peer->host);
 		      prefix_bgp_orf_remove_all (name);
 		      break;
 		    }
