borrowed from fedora
fix for CAN-2005-1280

--- tcpdump-3.8.2/print-rsvp.c.old	2004-03-24 05:00:38.000000000 +0100
+++ tcpdump-3.8.2/print-rsvp.c		2005-04-27 17:09:34.000000000 +0200
@@ -872,6 +872,8 @@
 
         case RSVP_OBJ_RRO:
         case RSVP_OBJ_ERO:
+            {
+            int step;
             switch(rsvp_obj_ctype) {
             case RSVP_CTYPE_IPV4:
                 while(obj_tlen >= 4 ) {
@@ -889,15 +891,16 @@
                                    "none",
                                    *(obj_tptr+7))); /* rfc3209 says that this field is rsvd. */
                     }
-                    obj_tlen-=*(obj_tptr+1);
-                    obj_tptr+=*(obj_tptr+1);
+                    step = *(obj_tptr+1) ? *(obj_tptr+1) : obj_tlen;
+                    obj_tlen -= step;
+                    obj_tptr += step;
                 }
                 break;
             default:
                 hexdump=TRUE;
             }
             break;
-
+            }
         case RSVP_OBJ_HELLO:
             switch(rsvp_obj_ctype) {
             case RSVP_CTYPE_1:
