From 686753f7f69c3b1b92dd351b3ea7ea678a7d4b7a Mon Sep 17 00:00:00 2001 From: Jay Merrifield Date: Fri, 13 May 2011 16:53:21 -0400 Subject: [PATCH] fixes ticket 7244, there's no guard against unparsed characters at the end of the date string, any extra characters are just ignored. This patch treats that scenario as an error --- tests/unit/datepicker/datepicker_tickets.js | 9 +++++++++ ui/jquery.ui.datepicker.js | 3 +++ 2 files changed, 12 insertions(+) diff --git a/tests/unit/datepicker/datepicker_tickets.js b/tests/unit/datepicker/datepicker_tickets.js index 7e6dc5f0009..721be15460a 100644 --- a/tests/unit/datepicker/datepicker_tickets.js +++ b/tests/unit/datepicker/datepicker_tickets.js @@ -24,4 +24,13 @@ test('beforeShowDay-getDate', function() { inp.datepicker('hide'); }); +test('Ticket #7244: date parser does not fail when too many numbers are passed into the date function', function() { + expect(1); + try{ + var date = $.datepicker.parseDate('dd/mm/yy', '18/04/19881'); + }catch(e){ + ok("invalid date detected"); + } +}); + })(jQuery); diff --git a/ui/jquery.ui.datepicker.js b/ui/jquery.ui.datepicker.js index 5b1dad68472..636ac232261 100644 --- a/ui/jquery.ui.datepicker.js +++ b/ui/jquery.ui.datepicker.js @@ -1074,6 +1074,9 @@ $.extend(Datepicker.prototype, { checkLiteral(); } } + if (iValue < value.length){ + throw "Extra/unparsed characters found in date: " + value.substring(iValue); + } if (year == -1) year = new Date().getFullYear(); else if (year < 100)