FB_security 板


In message <[email protected]>, Erik Cederstrand <[email protected]> wrote: >Silly things are reported like missing return at the end of main() In the post that you are replying to, I took issue with two prior assertions made by Mark Andrews, specifically (1) that some clang static analysis warnings are "false positives" and (2) that elimination some of them was "impossible". Would you agree with me if I were to say that if in fact there is no return statement at the end of the main() function, then a warning which simply states that fact is not in any sense "false"? And if you would agree with me on that, would you also and likewise agree that such a warning in exactly such a context cannot and should not be considered, by any reasonable person to be a "false" postive? And secondly, continuing with this same example (i.e. of a missing return at the end of main) would you agree with me that elimination of a warning about that very specific and particular condition would not only be entirely "possible", but actually entirely straightforward? >or not free()ing memory two lines before program exit. Again, if a clang static analysis is generating a warning message saying that a chunk of malloc'd memory is not being free'd before program exit, and if in fact that memory is not being free'd before program exit, then how does such a message in any sense constitute a "false positive"? And also, in what sense, if any, might it be either "impossible"... or even particularly difficult for that matter... to eliminate exactly such a warning message in exactly such a context? Wouldn't simply adding a suitable call to free() make the warning go away? Assuming so, then what, exactly, is the problem? >There are nonsensical >reports because the analyzer doesn't detect exit() in a usage() function >because usage() is defined in a separate compilation unit, If there does not exist, at present, any mechanism (supported by the clang compiler) to accomodate this precise situation, then this is certainly something that would bear fixing (in that compiler). I know that GNU C has a special pragma (__noreturn__) which can be attached to external function declarations _precisely_ to deal with this exact sort of situa- tion, i.e. otherwise unhelpful and misleading results from static analysis that does not take into account that a given external function causes program exit: http://gcc.gnu.org/onlinedocs/gcc-4.3.5/gcc/Function-Attributes.html "This makes slightly better code. More importantly, it helps avoid spurious warnings of uninitialized variables." ^^^^^^^^^^^^^^^^^^^^^^^ >int foo(int y, int z) { > int x; > if (y == z) { > x = 0; > } else { > if (y != z) { > x = 1; > } > } > return x; >} > >warning that x may be uninitialized. Yes. That code will likely get exactly that warning from many C compilers. >Fixing these require considerable effort Sir, does not the following trivial and obvious single line modification to the above code eliminate the warning? And does it not do so *without* the need for ``considerable effort''? int x = -1; I thank you for providing me with the example above, and thus also this opportunity to so perfectly illustrate my fundamental point. My fundamental point is just this: I think that it is a real crying shame that implementors of compilers... in particular GCC and clang... have worked and striven and sweated so long and so hard to give developers such great and often quite helpful compile-time warnings... warnings which, if heeded, may often prevent serious bugs from making it out the door... only to find that many a developer simply refuses to pay any heed at all to the warnings because (a) not all of them indicate absolutely DIRE problems and because (b) eliminating the ones that don't is _perceived_ by many... wrongly in my opinion... to be ``too hard''. As the examples above illustrate, the claim that eliminating the non-helpful warnings is ``too hard'' cannot, I believe, be supported by the facts, and the (unfortunately widespread) perception that eliminating such warnings is ``too hard'' is actually... and not to put too fine a point on it... a product more of ignorance or laziness than it is a product of genuine difficulty in quieting the unhelpful diagnostics in question. (To me it is a little like going for a drive with your cranky eighty year old grandfather who, even when out on the freeway, refuses to engage the cruise control because (he claims) it is ``too hard'' to enable it. Actually, as most of us know, it really just ain't that bloody hard.) In short, neither the use of modern cruise control systems nor the elimination of the kinds of static compiler generated warnings we have been discussing is in fact very hard at all, and in both cases there are substantial benefits to be derived from making proper and full use of these modern tools. (Those benefits explain why the implementors of these things went to such a lot of time and bother to actually build these things.) >e.g. improving IPA and adding alpha-remaning support to the >analyzer's constraint manager, or would result in unnecessary code churn >in FreeBSD just to work around the reports. I'm sorry, you are apparently using some domain-specific terminology with which I am not familiar. What exactly is "IPA" and "alpha-remaning"? Do these have something do do with SSL? As regards to your claim relating to "unnecessary code churn", I'm not sure what I can offer, other than the observation that at some or many times during this month of April, 2014 I believe that there have existed many many many system administrators, throughout the world, who, I believe, rather seriously _do_ wish that the code of OpenSSL had been ``churned'' a bit more than it had been prior to this month. In other words I'm not 100% sure that the loaded term ``code churn'' carries quite the perjorative connotation that you had intended. Not in the present context anyway. If ``code churn'' causes bugs to be ``churned'' *out* of production code, then it is a Good Thing, not a Bad Thing. >My best guess is that at least 90% of the reports are either false >positives or really silly. As I've noted above, a warning that says that a function is missing a return statement when it is in fact missing a return statement is not in any sense a ``false positive''. It may be a TRUE positive that many programmers may, in their haste to ship something, prefer to ignore, but that is a judgement call which could be made in a different way by a different programmer. And more to the point, the programmer who does in fact wish to ignore that specific warning can trivially banish it from view, forever, simply by adding the requsite return statement... even if, due to actual run-time behavior, that added return statement will be essentially superfluous (at run-time). >Which doesn't mean that the reports are >useless, but a lot of time is wasted finding real bugs. I could be wrong, but I am sort-of thinking that perhaps that last part of what you said above didn't come out quite the way you had intended. Regards, rfg _______________________________________________ [email protected] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-security To unsubscribe, send any mail to "[email protected]"







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草
伺服器連線錯誤,造成您的不便還請多多包涵!
「贊助商連結」






like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP