From 6cb22fb04d83e0bc1046dd980736d97768928725 Mon Sep 17 00:00:00 2001 From: RblSb Date: Sun, 29 Aug 2021 22:08:50 +0300 Subject: Fix int32 overflow closes #29 --- build/server.js | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'build/server.js') diff --git a/build/server.js b/build/server.js index 5f39892..28f6ff2 100644 --- a/build/server.js +++ b/build/server.js @@ -3646,15 +3646,17 @@ server_HttpServer.serveMedia = function(req,res,filePath) { range = "bytes=0-"; } var ranges = new EReg("[-=]","g").split(range); - var start = Std.parseInt(ranges[1]); - if(start == null) { + var start = parseFloat(ranges[1]); + if(server_Utils.isOutOfRange(start,0,videoSize - 1)) { start = 0; } - var end = Std.parseInt(ranges[2]); - if(end == null) { + var end = parseFloat(ranges[2]); + if(isNaN(end)) { end = start + 5242880; } - end = Math.min(end,videoSize - 1) | 0; + if(server_Utils.isOutOfRange(end,start,videoSize - 1)) { + end = videoSize - 1; + } res.setHeader("Content-Range","bytes " + start + "-" + end + "/" + videoSize); res.setHeader("Content-Length","" + (end - start + 1)); res.statusCode = 206; @@ -4802,6 +4804,13 @@ server_Utils.getLocalIp = function() { } return "127.0.0.1"; }; +server_Utils.isOutOfRange = function(value,min,max) { + if(!(value == null || isNaN(value) || value < min)) { + return value > max; + } else { + return true; + } +}; server_Utils.sortedPush = function(ids,id) { var _g_current = 0; while(_g_current < ids.length) if(id < ids[_g_current++]) { -- cgit v1.2.3