最近在看一些同时的代码,发现有些代码确实烂的可以。不仅代码风格很差,就连最基本的逻辑也是不严谨的。接着就是在解析一段数据时,没有对数据中对应的字段进行有效值范围约束。如:
struct A
{
int msg_id;
char msg_body[100];
short msg_param;
}
在实际中:
1,msg_id是有范围的,因为并不是所有的msg_id都被实现了。
2,msg_body里面的内容有可能是具有一定特征的,对于部分msg_id是可能不存在部分种类的msg_id
3.msg_param也有可能是有范围的。
当在一些习惯不好的程序员手里写这段数据的解析往往是
void parse(const char* buff)
{
struct A a;
memcpy(a.msg_id, buff, 4);
memcpy(a.msg_body, buff+1, 100);
memcpy(a.msg_param, buff+101, 2);
.......... //do something
}
由于这里没有判断几个关键字段的有效值范围,很可能在dosomething的这个代码块部分会出现执行错误的问题。