EEFB3活动看板一行过长产生掉线的BUG及解决
现象: 活动看板若一行超过特定长度后,当查看到这个活动看板时会有掉线现象.
原因: FB3对这个没有保护机制,造成对内存的非法读操作(溢出啦)
参考解决方法:
1.定义活动看板每行最大长度.
在bbs.h中的这一行:
#define ACBOARD_BUFSIZE 150 // 数字即为最大长度
2.在more.c中
函数NNread_init()
原:
char buf[ACBOARD_BUFSIZE], buf2[ACBOARD_BUFSIZE + 10];
原:(约102行左右)
if (flag == 0) {
strcpy(buf2, "K");
strcat(buf2, buf);
}
memcpy(ptr, buf2, sizeof(buf2));
改为:
if (flag == 0) {
strcpy(buf2, "K");
strcat(buf2, buf);
}
buf2[ACBOARD_BUFSIZE-1] = '\0';
memcpy(ptr, buf2, ACBOARD_BUFSIZE);
其实解决方法有很多的啦...问题原因跟buf和buf2的声明有很大的关系,
总之不要让它对内存乱弄就OK了
--
修改:fishchen FROM 211.66.114.93
FROM 211.66.114.93