Changeset 23990


Ignore:
Timestamp:
2010-11-14T06:58:34+01:00 (7 years ago)
Author:
jow
Message:

[package] busybox: add 6RD prefix sanity checking as mandated by RFC5969, bump pkg revision

Location:
trunk/package/busybox
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/busybox/Makefile

    r23961 r23990  
    1010PKG_NAME:=busybox 
    1111PKG_VERSION:=1.17.3 
    12 PKG_RELEASE:=1 
     12PKG_RELEASE:=2 
    1313PKG_FLAGS:=essential 
    1414 
  • trunk/package/busybox/patches/244-udhcpc_add_6rd_option.patch

    r23989 r23990  
    5959 static int mton(uint32_t mask) 
    6060 { 
    61 @@ -177,6 +195,60 @@ static NOINLINE char *xmalloc_optname_op 
     61@@ -177,6 +195,70 @@ static NOINLINE char *xmalloc_optname_op 
    6262  
    6363                        return ret; 
     
    8686+                        */ 
    8787+ 
    88 +                       /* IPv4MaskLen */ 
    89 +                       dest += sprintf(dest, "%u ", *option++); 
    90 +                       len--; 
     88+                       /* Sanity check: ensure that our length is at least 22 bytes, that 
     89+                        * IPv4MaskLen is <= 32, 6rdPrefixLen <= 128 and that the sum of 
     90+                        * (32 - IPv4MaskLen) + 6rdPrefixLen is less than or equal to 128. 
     91+                        * If any of these requirements is not fulfilled, return with empty 
     92+                        * value. 
     93+                        */ 
     94+                       if ((len >= 22) && (*option <= 32) && (*(option+1) <= 128) && 
     95+                           (((32 - *option) + *(option+1)) <= 128)) 
     96+                       { 
     97+                               /* IPv4MaskLen */ 
     98+                               dest += sprintf(dest, "%u ", *option++); 
     99+                               len--; 
    91100+ 
    92 +                       /* 6rdPrefixLen */ 
    93 +                       dest += sprintf(dest, "%u ", *option++); 
    94 +                       len--; 
     101+                               /* 6rdPrefixLen */ 
     102+                               dest += sprintf(dest, "%u ", *option++); 
     103+                               len--; 
    95104+ 
    96 +                       /* 6rdPrefix */ 
    97 +                       dest += sprint_nip6(dest, "", option); 
    98 +                       option += 16; 
    99 +                       len -= 16; 
     105+                               /* 6rdPrefix */ 
     106+                               dest += sprint_nip6(dest, "", option); 
     107+                               option += 16; 
     108+                               len -= 16; 
    100109+ 
    101 +                       /* 6rdBRIPv4Addresses */ 
    102 +                       while (len >= 4) 
    103 +                       { 
    104 +                               dest += sprint_nip(dest, " ", option); 
    105 +                               option += 4; 
    106 +                               len -= 4; 
     110+                               /* 6rdBRIPv4Addresses */ 
     111+                               while (len >= 4) 
     112+                               { 
     113+                                       dest += sprint_nip(dest, " ", option); 
     114+                                       option += 4; 
     115+                                       len -= 4; 
    107116+ 
    108 +                               /* the code to determine the option size fails to work with 
    109 +                                * lengths that are not a multiple of the minimum length, 
    110 +                                * adding all advertised 6rdBRIPv4Addresses here would 
    111 +                                * overflow the destination buffer, therefore skip the rest 
    112 +                                * for now 
    113 +                                */ 
    114 +                               break; 
     117+                                       /* the code to determine the option size fails to work with 
     118+                                        * lengths that are not a multiple of the minimum length, 
     119+                                        * adding all advertised 6rdBRIPv4Addresses here would 
     120+                                        * overflow the destination buffer, therefore skip the rest 
     121+                                        * for now 
     122+                                        */ 
     123+                                       break; 
     124+                               } 
    115125+                       } 
    116126+ 
Note: See TracChangeset for help on using the changeset viewer.