名前表示バグ@みんごる5

  • MINGOL

早く対策されるように書いてしまいますね:)

(追記 11/3 2:35)
このバグ技ですが、やらないでください
名前表示バグの件、使うのをやめましょう@みんごる5

playstation.comでの報告に際してここを参照して欲しいということも含めているので、以下の内容(やり方)は消しませんが、とにかくやらないようにお願いします。



いろいろやった結果として、quotationの処理の問題のように思えます。
試した感じでは致命的なことにはならない「よう」ですが、気持ち悪いので修正が必要でしょう。

・名前に半角ダブルクオート " が含まれていて(自分で試してはないですが、おそらくシングルクオート ' でも同じ)
・名前が制限いっぱい(16文字)まで文字数を使っていて(後半をスペースで埋めるなど)
(・名前に全角を含む? これはやや謎あり 全部ダブルクオートの名前でも発現する)

おそらくこの条件を満たすと、表示がバグります。具体的にいうと
コメントを書くと、それが名前の後半として表示される。つまり毎回名前表示が変化するw
・ダブルクオートが1つのときには、名前後半省略の … はついたまま、コメントがつながる
・2つ以上のときには、名前後半省略の … は消える
・長いコメントでは、その名前の表示がおかしくなる
 文字表示は 文字色表示&ちょっとずらして黒で文字の影表示 とことのようですが、影表示は全部出るものの文字色表示が表示しきれず、ずれる&一部しか出ない、という感じです。

たとえば、実際に確認したパターンとしては、名前が
 "(半角ダブルクオート) + 全角n + 全角n + 半角スペース11 + 全角スペース1 「"nn  」
 全部 " 「""""""""""""""""」
こんな場合です。


えー
読んでる人はさっぱりだと思いますがw、まぁそのへんはやってみればわかるということで話を進めます。

なぜこうなるかの予測ですが、データ領域が
 名前データ コメントデータ
こうなってるのでしょう。名前データの形式としては、たぶん最後にデータ終わりのコードが入るのでしょう。適当にいえば例えば 0x00 とかでしょうかね。
長い名前のときは、表示名として「ほにゃほにゃ…」+ 0x00 というような感じで格納されるわけです。(ほにゃほにゃが何文字までいけるのかはちゃんと調べてないので適当です)

つまり、データ領域としては
 名前データ(名前前半部)… 0x00 コメントデータ 0x00
こんな感じでしょうか。

さて、名前に半角ダブルクオートがあると多分途中の処理でサニタイズというか、例えば全角に変換して後で戻す、というような処理が行われているのではないかと推測します。このへんは特殊記号をどうやってハンドリングするかっつう話なわけですが。
で、この処理で(コードそのものというよりもライブラリレベルの話な気もする)、文字数いっぱいになっていた場合にあふれてしまって、最後のデータ終わりのコードが欠落してしまうんだと思います。

というわけで、ダブルクオート1個のときは一個あふれて、文字終了コードが飛んで  名前データ(名前前半部)… コメントデータ 0x00
こうなるのでしょうか。で、名前表示のルーチンでコメントのところまでが名前と認識します。

ダブルクオートが2個の場合は、…まで飛んで
 名前データ(名前前半部) コメントデータ 0x00
こんな感じになります。


というわけで。後半はあくまで予測レベルです。
その他のデータ領域を破壊することはどうもなさそうな感じなので、ひどい害はないと思いますが、まぁ気持ち悪いですね。(実際にはその短縮名前セットの瞬間にコメント領域をoverrideしてるのかもしれないけど、仮にそうだとしてもまったく実害がない)
ここまで書いてふと思ったのは、コメント入力で半角ダブルクオートをがーっとつっこんだらここが同じことになって、次のデータが見えるんじゃないかとかw
試してみたけど大丈夫でした。半角でも文字数で制限されている(バイト数としては余裕がある)というあたりがセーフなのか、処理してるライブラリ(のようなもの)が違うのか、ちょっと判然としませんな。

てなわけで。わかりづらくてすまんす。
pls fix >開発チーム

Track Back

Track Back URL

コメントする

公開されません

(いくつかのHTMLタグ(a, strong, ul, ol, liなど)が使えます)