From: Yusuke Endoh <mame@...>
Date: 2012-03-14T20:00:15+09:00
Subject: [ruby-dev:45363] [Backport93 - Backport #6146][Open] three possible bugs by nobu


Issue #6146 has been reported by Yusuke Endoh.

----------------------------------------
Backport #6146: three possible bugs by nobu
https://bugs.ruby-lang.org/issues/6146

Author: Yusuke Endoh
Status: Open
Priority: Normal
Assignee: Nobuyoshi Nakada
Category: 
Target version: 


なかださん

なかださんの変更が関わってそうな箇所で Coverity Scan が教えて
くれたことを 3 つほど送ります。



1 つめ。file.c について、r34372 の変更で

3566 	    end = name + *alllen;

という *alllen のデリファレンスがされるようになりましたが、その
あとに

3615 	    if (alllen)
3616 		*alllen = n;

とあるように、alllen は NULL である可能性が考慮されていたよう
です。
変更の意図はよくわかっていませんが、strlen(name) とかにしなくて
大丈夫でしょうか。


2 つめ。parse.y の intern_str で

10016             if (!--mb) enc = rb_ascii8bit_encoding();

10053                 enc = rb_enc_get(rb_id2str(id));

という 2 行がありますが、どちらももそのあと enc が使われません。
紆余曲折で残った残骸っぽいですが、単に消しちゃえばいいのか確認
して頂けますでしょうか。


3 つめ。util.c の ruby_strtod で

1979             if (!*++s || !(s1 = strchr(hexdigit, *s))) goto ret0;
1980             while (*s == '0') s++;
1981             if ((s1 = strchr(hexdigit, *s)) != NULL) {

で、1979 行目の s1 = strchr(hexdigit, *s) の代入結果が使われる
ことがありません。その後の 1991 行目のあたりも同様です。
これも紆余曲折で残った感じですが、これは消しちゃえば大丈夫ですかね?

-- 
Yusuke Endoh <mame@tsg.ne.jp>


-- 
http://bugs.ruby-lang.org/