- if (*tp) {
- u16 spec_len;
-
- /* length field exists ? */
- if (hdrlen < 2)
- break;
- lp = skb_header_pointer(skb, ptr + 1,
- sizeof(_optlen),
- &_optlen);
- if (lp == NULL)
- break;
- spec_len = optinfo->opts[temp] & 0x00FF;
-
- if (spec_len != 0x00FF && spec_len != *lp) {
- DEBUGP("Lbad %02X %04X\n", *lp,
- spec_len);
+ if (((optinfo->opts[temp] & 0x00FF) != 0xFF) &&
+ (unsigned char)*optdesc != 0){
+ if ( ntohs((u16)*optdesc) !=
+ optinfo->opts[temp] ){
+ DEBUGP("Lbad %02X %04X %04X\n",
+ (unsigned char)*optdesc,
+ ntohs((u16)*optdesc),
+ optinfo->opts[temp]);