浏览 3083 次
锁定老帖子 主题:libsmtp--库的一个bug
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-02-18
最后修改:2011-02-18
http://libsmtp.sourceforge.net/
用纯C写的smtp客户端已经很少了,更重要的是性能要好,不要有太多附加的东西,只需要完成smtp主要协议就行, 我还是很喜欢这个项目的,我用它做smtp邮件系统的性能测试,可惜好久没更新了。
file:plg_login.c
/* username */ usr = (char*)malloc_ (2*strlen (srv->username)+4); siz = alg_b64_encode (srv->username, strlen (srv->username), usr); if (smtp_write (srv, usr, siz) == -1) { free_ (usr, NULL); return (-1); /* error msg is already set */ } if ((rsp = smtp_read_response_ (srv, 1)) == NULL) { free_ (usr, NULL); return (-1); /* error msg is already set */ } free_ (rsp, usr, NULL); /* password */ pwd = (char*)malloc_ (2*strlen (srv->password)+4); siz = alg_b64_encode (srv->password, strlen (srv->password), pwd); if (smtp_write (srv, pwd, siz) == -1) { free_ (pwd, NULL); return (-1); /* error msg is already set */ } if ((rsp = smtp_read_response_ (srv, 1)) == NULL) { free_ (pwd, NULL); return (-1); /* error msg is already set */ } // free_ (rsp, usr, NULL); /* change usr to pwd. */ free_ (rsp, pwd, NULL);
释放指针的时候对usr释放了两次,导致系统报错double free。 第二次usr释放应该改为释放pwd。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-04-07
楼主你应该在那个网站下面发文,告知bug,这样可以帮助更多的人。
|
|
返回顶楼 | |
发表时间:2011-04-08
哦。谢谢提醒。
呵呵,我发邮件告诉原作者。 最近用第三方库发现很多bug,还很低级。 尤其是Ruby写的库,质量要比C库差很多。 我是一边理解一边改,小东西的话真不如自己写了。 sf之类网站应该有个像淘宝那种打分或点评的机制,差的库让大家一看评分就知道。 |
|
返回顶楼 | |
发表时间:2011-04-08
很多开源库都是大家在业余时间根据自己的兴趣编写的。很多都是靠业余时间自行维护。如果一个库没能获得足够的关注,那么一段时间以后,就很可能不维护了。
我的仓库猫就是这样,没人用没人反馈,自己平时也用不到,当初完全是因为一篇文章引发的兴趣完成的。久了就没兴趣维护了。 开源界的很多东西就是这样,好的非常好,有很多人维护。甚至有大公司专门贡献代码。没人关注的就很差,投入不足,结果质量不好。质量不好,更加没人关注,恶性循环。 |
|
返回顶楼 | |
发表时间:2011-04-08
嗯,是的,希望以后程序员是第一批实现共产主义,要什么有什么的人,
然后大家用数不尽的业余时间去重构自己的开源项目,让用的人也放心。 |
|
返回顶楼 | |
发表时间:2011-04-12
最后修改:2011-04-13
好文章,谢谢.
|
|
返回顶楼 | |
发表时间:2011-04-12
受益匪浅了
|
|
返回顶楼 | |
发表时间:2011-04-12
魔力猫咪 写道 很多开源库都是大家在业余时间根据自己的兴趣编写的。很多都是靠业余时间自行维护。如果一个库没能获得足够的关注,那么一段时间以后,就很可能不维护了。
我的仓库猫就是这样,没人用没人反馈,自己平时也用不到,当初完全是因为一篇文章引发的兴趣完成的。久了就没兴趣维护了。 开源界的很多东西就是这样,好的非常好,有很多人维护。甚至有大公司专门贡献代码。没人关注的就很差,投入不足,结果质量不好。质量不好,更加没人关注,恶性循环。 顶 |
|
返回顶楼 | |