From 2f848ffdc61722e842b09e3874d854b1a9063155 Mon Sep 17 00:00:00 2001 From: Patrick Wang Date: Mon, 17 Jun 2013 19:33:57 +0800 Subject: [PATCH] Bug 883296: returning empty object instead of null when decoding zero length data in Octet.decodeMultiple. r=gene --- dom/mobilemessage/src/ril/WspPduHelper.jsm | 56 +++++++++++----------- 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/dom/mobilemessage/src/ril/WspPduHelper.jsm b/dom/mobilemessage/src/ril/WspPduHelper.jsm index ff68e6493694..1b3da72d8ec9 100644 --- a/dom/mobilemessage/src/ril/WspPduHelper.jsm +++ b/dom/mobilemessage/src/ril/WspPduHelper.jsm @@ -239,7 +239,7 @@ this.Octet = { throw new RangeError(); } if (end == data.offset) { - return null; + return []; } let result; @@ -2291,40 +2291,38 @@ this.PduHelper = { let octetArray = Octet.decodeMultiple(data, contentEnd); let content = null; - if (octetArray) { - let charset = headers["content-type"].params && - headers["content-type"].params.charset - ? headers["content-type"].params.charset.charset - : null; + let charset = headers["content-type"].params && + headers["content-type"].params.charset + ? headers["content-type"].params.charset.charset + : null; - let mimeType = headers["content-type"].media; + let mimeType = headers["content-type"].media; - if (mimeType) { - if (mimeType == "application/smil") { - // If the content is a SMIL type, convert it to a string. - // We hope to save and expose the SMIL content in a string way. - content = this.decodeStringContent(octetArray, charset); - } else if (mimeType.indexOf("text/") == 0 && charset != "utf-8") { - // If the content is a "text/plain" type, we have to make sure - // the encoding of the blob content should always be "utf-8". - let tmpStr = this.decodeStringContent(octetArray, charset); - let encoder = new TextEncoder("UTF-8"); - content = new Blob([encoder.encode(tmpStr)], {type : mimeType}); + if (mimeType) { + if (mimeType == "application/smil") { + // If the content is a SMIL type, convert it to a string. + // We hope to save and expose the SMIL content in a string way. + content = this.decodeStringContent(octetArray, charset); + } else if (mimeType.indexOf("text/") == 0 && charset != "utf-8") { + // If the content is a "text/plain" type, we have to make sure + // the encoding of the blob content should always be "utf-8". + let tmpStr = this.decodeStringContent(octetArray, charset); + let encoder = new TextEncoder("UTF-8"); + content = new Blob([encoder.encode(tmpStr)], {type : mimeType}); - // Make up the missing encoding info. - if (!headers["content-type"].params) { - headers["content-type"].params = {}; - } - if (!headers["content-type"].params.charset) { - headers["content-type"].params.charset = {}; - } - headers["content-type"].params.charset.charset = "utf-8"; + // Make up the missing encoding info. + if (!headers["content-type"].params) { + headers["content-type"].params = {}; } + if (!headers["content-type"].params.charset) { + headers["content-type"].params.charset = {}; + } + headers["content-type"].params.charset.charset = "utf-8"; } + } - if (!content) { - content = new Blob([octetArray], {type : mimeType}); - } + if (!content) { + content = new Blob([octetArray], {type : mimeType}); } parts[i] = {