stuncloud / UWSCR

UWSC互換スクリプト実行ツール
MIT License
50 stars 5 forks source link

バイト配列型VARIANTの変換処理が不正 #200

Open cocco84 opened 1 month ago

cocco84 commented 1 month ago

概要

5行目: binary = .responseBody [VARIANT変換エラー] 不正なVARIANT型(13)  が出ます

正確に言えばprint もできなかったので代入に限らず取り扱いそのものの問題でしょうか? responseTextは問題ありませんでした

再現スクリプト

url = "https://hoge.com/fuga.png"
with createoleobj("Msxml2.XMLHTTP")
    .open("GET", url, FALSE)
    .send()
    binary = .responseBody
endwith

再現手順

No response

回避方法

No response

備考

No response

バージョン

1.0.2

不具合発生環境

No response

stuncloud commented 1 month ago

@cocco84 VARIANT変換の実装漏れです VARIANT型の変数はprintや代入など、その値にアクセスする際に該当するUWSCRデータ型に変換を行うのですが、バイナリに対しての変換処理がそもそも実装されていなかったため不正なVARIANT型と判定されています

対策

stuncloud commented 1 month ago

.responseBodyVAR_ARRAY or VAR_BYTE

VARIANTのバイト配列がUWSCR型に変換されるとVARIANTの配列になっている しかしそのvtが異常で、example.comのresponseBodyの冒頭は以下のようになっている

print .responseBody
// [VARIANT(60), VARIANT(33), VARIANT(100), VARIANT(111), ...]

どうやらこれはバイト値がそのままvtとなっているためで、取りうる値によっては不正なVARIANT型エラーとなるものと考えられる

変換処理は要調査

stuncloud commented 1 month ago

タイトル変更しました