免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: sisi8408
打印 上一主题 下一主题

派对 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-01-25 11:45 |只看该作者
原帖由 sisi8408 于 2007-1-25 11:04 发表于 10楼  
哈哈,你能来就不是坏事,晕部运得再说。


   a = PAGE_SIZE % len;
     if (a)
            possible to overflow ;

not sure a == 0 in original code!!


嗯,算我没看细仔。但我还是要晕,因为你也没看仔细
page_size - len会为负数

论坛徽章:
0
12 [报告]
发表于 2007-01-25 11:55 |只看该作者
你比俺看得仔细,所以就不是坏事,也就别晕啦~~

[ 本帖最后由 sisi8408 于 2007-1-25 12:21 编辑 ]

论坛徽章:
0
13 [报告]
发表于 2007-01-25 12:47 |只看该作者
原帖由 sisi8408 于 2007-1-25 11:55 发表于 12楼  
你比俺看得仔细,所以就不是坏事,也就别晕啦~~


这是一个不小的bug,作者本意是snprintf的返回长度是实现输出到buf中的字符个数,但返回值却是将要输出的字符总长。所以page_size-len会产生负数,产生溢出。
另外三个snprintf连用,而中间没有判断也是大忌。
不晕了,佩服~佩服

论坛徽章:
0
14 [报告]
发表于 2007-01-25 13:06 |只看该作者
原帖由 skipjack 于 2007-1-25 12:47 发表于 13楼  


这是一个不小的bug,作者本意是snprintf的返回长度是实现输出到buf中的字符个数,但返回值却是将要输出的字符总长。所以page_size-len会产生负数,产生溢出。
另外三个snprintf连用,而中间没有判断也是大 ...


你的说法: ipstack+netfilter 需要NP化,俺也佩服~佩服。
不过,难度太大,不如MP的可行性。
NP化的角度看问题,工作一下子多了起来,兴奋得说。

[ 本帖最后由 sisi8408 于 2007-1-25 14:10 编辑 ]

论坛徽章:
0
15 [报告]
发表于 2007-01-25 14:38 |只看该作者

  1. linux-2.6.18.3/drivers/net/wireless/ipw2200.c

  2. static int
  3. ipw_compatible_rates(struct ipw_priv *priv,
  4.                 const struct ieee80211_network *network,
  5.                 struct ipw_supported_rates *rates)
  6. {
  7.         int num_rates, i;

  8.         memset(rates, 0, sizeof(*rates));
  9.         num_rates = min(network->rates_len, (u8) IPW_MAX_RATES);
  10.         rates->num_rates = 0; //not clean #####
  11. ........
  12. }
复制代码

论坛徽章:
0
16 [报告]
发表于 2007-01-26 11:01 |只看该作者

  1. linux-2.6.18.3/drivers/net/wireless/ipw2200.c

  2. static int ipw_associate_network(struct ipw_priv *priv,
  3.                  struct ieee80211_network *network,
  4.                  struct ipw_supported_rates *rates, int roaming)
  5. {
  6. ........
  7.         memset(&priv->assoc_request, 0, sizeof(priv->assoc_request));
  8.         priv->assoc_request.channel  = network->channel;
  9.         priv->assoc_request.auth_key = 0; //not clean #####
  10. ........
  11. }
复制代码

论坛徽章:
0
17 [报告]
发表于 2007-01-26 14:11 |只看该作者

  1. linux-2.6.18.3/drivers/net/wireless/ipw2200.c

  2. static int ipw_tx_skb (struct ipw_priv *priv, struct ieee80211_txb *txb, int pri)
  3. {
  4.         ........

  5.         case IW_MODE_ADHOC:
  6.                 unicast = !is_multicast_ether_addr(hdr->addr1);
  7.                 id = ipw_find_station(priv, hdr->addr1);
  8.                 if (id == IPW_INVALID_STATION) {
  9.                         id = ipw_add_station(priv, hdr->addr1);
  10.                         if (id == IPW_INVALID_STATION) {
  11.                                 IPW_WARNING("Attempt to send data to invalid cell: " MAC_FMT "\n",
  12.                                             MAC_ARG(hdr->addr1));
  13.                                 goto drop;
  14.                         }
  15.                 } // 2 same if, not clean #####
  16.                 break;
  17.         ........
  18. }
复制代码

[ 本帖最后由 sisi8408 于 2007-1-26 14:14 编辑 ]

论坛徽章:
0
18 [报告]
发表于 2007-01-29 09:05 |只看该作者
未来18个月的工作

e1k的玩法,听说有64种,俺只见过32种。
当初与skipjack开玩笑,也不是凭空乱说,
都是IXIA/Smartbit的结果,在安适有据可查。

Pentium-4-2.8GHz配82551,双向转发率为100Kpps,
Pentium-4-2.8GHz配82546,双向转发率为600Kpps,

俺还看到的数据高达900Kpps,差的有250Kpps,
俺认为不忽悠的说法,750Kpps能够满足多数实际应用的需求。

俺预计未来18个月,将会看到多方面的更好的数据,
主要因为多核处理器<MP>将会取代Pentium-4和Xeon,
MP与传统Unix玩法的区别是,不再用内存换效率,
当然Linux对MP的支持还需大家共同的关注。

大家还需关注无线应用对防火墙产品的需求,题外话沪市A股,

1000--1700点,玩艺术,
1700--2500点,玩技巧,
2500--3500点,玩心跳,

无线防火墙产品充满了广泛的艺术想象,ipw2200可视为昨天的e1k,
俺不熟悉BSD的情况,但从e1k的4--5--6--7.x.y在Linux的演变过程可以感觉,
各种尝试在某些方面的确发挥了关键作用,
把e1k的成熟方法用在ipw2200,俺认为这是紧迫性的工作。

完善性的工作还包括,改善ip+netfilter对MP的适应度,
用内存换效率的时代即将被MP改写,俺刚想明白,不怕您笑话,
Linux-2.6.18取代了Linux-2.4.20,也为迎娶MP提供了方法论。

实践性的工作包括,提升proxy对MP的利用效率,提高proxy并发连接的质量,
俺不清楚有多少安全产品是基于proxy,可行性应该不小。

尝试性的工作包括,用C7+Linux做嵌入式,为星巴克场所提供无线服务,
这个难度不大,关键是盒子要小巧和稳定才符合plmm的情调。

论坛徽章:
0
19 [报告]
发表于 2007-01-29 15:47 |只看该作者

  1. linux-2.6.18.3/net/ieee80211/ieee80211_rx.c

  2. int ieee80211_rx (struct ieee80211_device * ieee,
  3.                   struct sk_buff * skb,
  4.                   struct ieee80211_rx_stats * rx_stats)
  5. {
  6. ......

  7.         hdr = (struct ieee80211_hdr_4addr *)skb->data;
  8.         if (crypt && !(fc & IEEE80211_FCTL_PROTECTED) && !ieee->open_wep) {
  9.                 if (/*ieee->ieee802_1x && */
  10.                     ieee80211_is_eapol_frame(ieee, skb)) {
  11.                         /* pass unencrypted EAPOL frames even if encryption is
  12.                          * configured */
  13.                 } else {
  14.                         IEEE80211_DEBUG_DROP("encryption configured, but RX "
  15.                                              "frame not encrypted (SA=" MAC_FMT
  16.                                              ")\n", MAC_ARG(hdr->addr2));
  17.                         goto rx_dropped;
  18.                 }
  19.         }
  20.         // almost 2 same if block #####
  21.         if (crypt && !(fc & IEEE80211_FCTL_PROTECTED) && !ieee->open_wep &&
  22.             !ieee80211_is_eapol_frame(ieee, skb)) {
  23.                 IEEE80211_DEBUG_DROP("dropped unencrypted RX data "
  24.                                      "frame from " MAC_FMT
  25.                                      " (drop_unencrypted=1)\n",
  26.                                      MAC_ARG(hdr->addr2));
  27.                 goto rx_dropped;
  28.         }

  29. ......
  30. }
复制代码

论坛徽章:
0
20 [报告]
发表于 2007-01-31 11:06 |只看该作者


  1. linux-2.6.18.3/net/ieee80211/ieee80211_geo.c

  2. const /* inline ##### */ struct ieee80211_geo *       
  3. ieee80211_get_geo(struct ieee80211_device *ieee)
  4. {
  5.         return &ieee->geo;
  6. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP