From 308913b9c0f9dd188654e152c07e7666d5a9f2f2 Mon Sep 17 00:00:00 2001 From: Ian Bicking Date: Fri, 2 Jun 2017 13:00:48 -0500 Subject: [PATCH] Add more structured error messages to bad image URLs --- server/src/servershot.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/server/src/servershot.js b/server/src/servershot.js index d77656be18..974178f4c7 100644 --- a/server/src/servershot.js +++ b/server/src/servershot.js @@ -15,16 +15,19 @@ const PNG_HEADER = Buffer.from(PNG_HEADER_BASE64, "base64"); function assertPng(dataUrl) { const urlHeader = "data:image/png;base64,"; if (!dataUrl.startsWith(urlHeader)) { + mozlog.warn("invalid-data-url", {msg: "Invalid data: URL submitted", prefix: dataUrl.substr(0, urlHeader.length + 10)}); throw new Error('invalid data url'); } // only decode enough to get the header // we're lucky that 9 bytes is exactly 12 base64 characters const base64Header = dataUrl.substr(urlHeader.length, PNG_HEADER_BASE64.length); if (base64Header.length < PNG_HEADER_BASE64.length) { + mozlog.warn("invalid-data-image", {msg: "Invalid PNG image submitted", prefix: dataUrl.substr(0, urlHeader.length + PNG_HEADER_BASE64.length)}); throw new Error('invalid image'); } const header = Buffer.from(base64Header, "base64"); // 9 bytes if (!PNG_HEADER.equals(header.slice(0, 8))) { + mozlog.warn("invalid-data-image-decoded", {msg: "Invalid PNG image (after base64 decoding)"}); throw new Error('invalid png'); } }