]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Few FIXME's removed from auth, few FIXME's added to filter.
authorPavel Machek <pavel@ucw.cz>
Fri, 20 Aug 1999 09:59:39 +0000 (09:59 +0000)
committerPavel Machek <pavel@ucw.cz>
Fri, 20 Aug 1999 09:59:39 +0000 (09:59 +0000)
filter/filter.c
proto/rip/auth.c

index c98440cd0c89bb1a17e46d4c3783430f35b166a9..41499710c98ed74cef29ea1ff7a402cde0cc286b 100644 (file)
@@ -4,6 +4,9 @@
  *     Copyright 1998 Pavel Machek <pavel@ucw.cz>
  *
  *     Can be freely distributed and used under the terms of the GNU GPL.
+ *
+ *     FIXME: local namespace for functions
+ *     FIXME: switch (or how did we call it in final release?)
  */
 
 #include <stdio.h>
@@ -148,6 +151,7 @@ interpret(struct f_inst *what)
   case '<': COMPARE(i==-1);
   case '<=': COMPARE(i!=1);
 
+    /* FIXME: Should be able to work with prefixes of limited sizes */
   case '~':
     TWOARGS;
     res.type = T_BOOL;
index 4777eb553b90e4c4eb69a54b406d9407cd92614d..9dd26dab106ae7752f48bd31a0d699e1d8aede3f 100644 (file)
@@ -26,6 +26,8 @@
 #define P ((struct rip_proto *) p)
 #define P_CF ((struct rip_proto_config *)p->cf)
 
+#define PACKETLEN(num) (num * sizeof(struct rip_block) + sizeof(struct rip_packet_heading))
+
 /* 1 == failed, 0 == ok */
 int
 rip_incoming_authentication( struct proto *p, struct rip_block_auth *block, struct rip_packet *packet, int num )
@@ -39,7 +41,7 @@ rip_incoming_authentication( struct proto *p, struct rip_block_auth *block, stru
       return 1;
     }
     if (strncmp( (char *) (&block->packetlen), P_CF->passwords->password, 16)) {
-      log( L_AUTH, "Passwd authentication failed!\n" );
+      log( L_AUTH "Passwd authentication failed!\n" );
       return 1;
     }
     return 0;
@@ -49,13 +51,18 @@ rip_incoming_authentication( struct proto *p, struct rip_block_auth *block, stru
       struct password_item *head;
       struct rip_md5_tail *tail;
 
-      /* FIXME: check that block->packetlen looks valid */
+      if (block->packetlen != PACKETLEN(num)) {
+       log( L_ERR "packetlen in md5 does not match computed value\n" );
+       return 1;
+      }
 
       tail = (struct rip_md5_tail *) ((char *) packet + (block->packetlen - sizeof(struct rip_block_auth)));
 
       head = P_CF->passwords;
-      while (head) {   /* FIXME: should not we check that password is not expired? */
+      while (head) {
        /* FIXME: should check serial numbers, somehow */
+       if ((head->from > now) || (head->to < now))
+         continue;
        if (head->id == block->keyid) {
          struct MD5Context ctxt;
          char md5sum_packet[16];
@@ -111,7 +118,7 @@ rip_outgoing_authentication( struct proto *p, struct rip_block_auth *block, stru
       block->seq = sequence++;
       block->zero0 = 0;
       block->zero1 = 1;
-      block->packetlen = 0 /* FIXME */;
+      block->packetlen = PACKETLEN(num);
 
       tail = (struct rip_md5_tail *) ((char *) packet + (block->packetlen - sizeof(struct rip_block_auth)));
       tail->mustbeFFFF = 0xffff;