Commit 63e0d61
Neil Conway
Adjust datetime parsing to be more robust. We now pass the length of the
working buffer into ParseDateTime() and reject too-long input there,
rather than checking the length of the input string before calling
ParseDateTime(). The old method was bogus because ParseDateTime() can use
a variable amount of working space, depending on the content of the
input string (e.g. how many fields need to be NUL terminated). This fixes
a minor stack overrun -- I don't _think_ it's exploitable, although I
won't claim to be an expert.
Along the way, fix a bug reported by Mark Dilger: the working buffer
allocated by interval_in() was too short, which resulted in rejecting
some perfectly valid interval input values. I added a regression test for
this fix.1 parent 15e4d1e commit 63e0d61
File tree
7 files changed
+86
-75
lines changed- src
- backend/utils/adt
- include/utils
- test/regress
- expected
- sql
7 files changed
+86
-75
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
| 11 | + | |
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| |||
65 | 65 | | |
66 | 66 | | |
67 | 67 | | |
68 | | - | |
| 68 | + | |
69 | 69 | | |
70 | | - | |
71 | | - | |
72 | | - | |
73 | | - | |
| 70 | + | |
| 71 | + | |
74 | 72 | | |
75 | 73 | | |
76 | 74 | | |
| |||
894 | 892 | | |
895 | 893 | | |
896 | 894 | | |
897 | | - | |
| 895 | + | |
898 | 896 | | |
899 | 897 | | |
900 | 898 | | |
901 | 899 | | |
902 | | - | |
903 | | - | |
904 | | - | |
905 | | - | |
| 900 | + | |
| 901 | + | |
906 | 902 | | |
907 | 903 | | |
908 | 904 | | |
| |||
1733 | 1729 | | |
1734 | 1730 | | |
1735 | 1731 | | |
1736 | | - | |
| 1732 | + | |
1737 | 1733 | | |
1738 | 1734 | | |
1739 | 1735 | | |
1740 | 1736 | | |
1741 | | - | |
1742 | | - | |
1743 | | - | |
1744 | | - | |
| 1737 | + | |
| 1738 | + | |
1745 | 1739 | | |
1746 | 1740 | | |
1747 | 1741 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
| 11 | + | |
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| |||
699 | 699 | | |
700 | 700 | | |
701 | 701 | | |
702 | | - | |
703 | 702 | | |
704 | 703 | | |
705 | 704 | | |
706 | 705 | | |
707 | 706 | | |
708 | | - | |
709 | | - | |
| 707 | + | |
| 708 | + | |
| 709 | + | |
| 710 | + | |
710 | 711 | | |
711 | 712 | | |
712 | 713 | | |
713 | 714 | | |
714 | 715 | | |
715 | | - | |
716 | | - | |
| 716 | + | |
| 717 | + | |
| 718 | + | |
717 | 719 | | |
718 | 720 | | |
719 | 721 | | |
| |||
729 | 731 | | |
730 | 732 | | |
731 | 733 | | |
732 | | - | |
| 734 | + | |
733 | 735 | | |
734 | 736 | | |
735 | 737 | | |
736 | 738 | | |
737 | | - | |
| 739 | + | |
| 740 | + | |
| 741 | + | |
| 742 | + | |
| 743 | + | |
| 744 | + | |
| 745 | + | |
| 746 | + | |
| 747 | + | |
| 748 | + | |
| 749 | + | |
| 750 | + | |
| 751 | + | |
| 752 | + | |
| 753 | + | |
| 754 | + | |
738 | 755 | | |
739 | 756 | | |
740 | 757 | | |
| |||
749 | 766 | | |
750 | 767 | | |
751 | 768 | | |
752 | | - | |
| 769 | + | |
753 | 770 | | |
754 | 771 | | |
755 | 772 | | |
756 | 773 | | |
757 | | - | |
| 774 | + | |
758 | 775 | | |
759 | | - | |
| 776 | + | |
760 | 777 | | |
761 | 778 | | |
762 | 779 | | |
763 | 780 | | |
764 | 781 | | |
765 | | - | |
| 782 | + | |
766 | 783 | | |
767 | 784 | | |
768 | | - | |
| 785 | + | |
769 | 786 | | |
770 | 787 | | |
771 | 788 | | |
772 | 789 | | |
773 | 790 | | |
774 | 791 | | |
775 | 792 | | |
776 | | - | |
| 793 | + | |
777 | 794 | | |
778 | 795 | | |
779 | 796 | | |
780 | 797 | | |
781 | 798 | | |
782 | | - | |
| 799 | + | |
783 | 800 | | |
784 | 801 | | |
785 | 802 | | |
| |||
788 | 805 | | |
789 | 806 | | |
790 | 807 | | |
791 | | - | |
| 808 | + | |
792 | 809 | | |
793 | | - | |
| 810 | + | |
794 | 811 | | |
795 | 812 | | |
796 | 813 | | |
797 | 814 | | |
798 | 815 | | |
799 | 816 | | |
800 | | - | |
| 817 | + | |
801 | 818 | | |
802 | 819 | | |
803 | 820 | | |
| |||
811 | 828 | | |
812 | 829 | | |
813 | 830 | | |
814 | | - | |
| 831 | + | |
815 | 832 | | |
816 | | - | |
| 833 | + | |
817 | 834 | | |
818 | 835 | | |
819 | 836 | | |
| |||
825 | 842 | | |
826 | 843 | | |
827 | 844 | | |
828 | | - | |
| 845 | + | |
829 | 846 | | |
830 | | - | |
| 847 | + | |
831 | 848 | | |
832 | 849 | | |
833 | 850 | | |
| |||
838 | 855 | | |
839 | 856 | | |
840 | 857 | | |
841 | | - | |
| 858 | + | |
842 | 859 | | |
843 | | - | |
| 860 | + | |
844 | 861 | | |
845 | 862 | | |
846 | 863 | | |
847 | 864 | | |
848 | 865 | | |
849 | | - | |
| 866 | + | |
850 | 867 | | |
851 | 868 | | |
852 | 869 | | |
853 | 870 | | |
854 | 871 | | |
855 | 872 | | |
856 | 873 | | |
857 | | - | |
| 874 | + | |
858 | 875 | | |
859 | 876 | | |
860 | | - | |
| 877 | + | |
861 | 878 | | |
862 | 879 | | |
863 | 880 | | |
864 | 881 | | |
865 | 882 | | |
866 | | - | |
| 883 | + | |
867 | 884 | | |
868 | | - | |
| 885 | + | |
869 | 886 | | |
870 | 887 | | |
871 | 888 | | |
| |||
882 | 899 | | |
883 | 900 | | |
884 | 901 | | |
885 | | - | |
| 902 | + | |
886 | 903 | | |
887 | 904 | | |
888 | 905 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
13 | | - | |
| 13 | + | |
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
| |||
306 | 306 | | |
307 | 307 | | |
308 | 308 | | |
309 | | - | |
| 309 | + | |
310 | 310 | | |
311 | 311 | | |
312 | 312 | | |
313 | 313 | | |
314 | | - | |
315 | | - | |
316 | | - | |
317 | | - | |
| 314 | + | |
| 315 | + | |
318 | 316 | | |
319 | 317 | | |
320 | 318 | | |
| |||
711 | 709 | | |
712 | 710 | | |
713 | 711 | | |
714 | | - | |
| 712 | + | |
715 | 713 | | |
716 | | - | |
717 | | - | |
718 | | - | |
719 | | - | |
| 714 | + | |
| 715 | + | |
720 | 716 | | |
721 | 717 | | |
722 | 718 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
| 11 | + | |
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| |||
77 | 77 | | |
78 | 78 | | |
79 | 79 | | |
80 | | - | |
| 80 | + | |
81 | 81 | | |
82 | | - | |
83 | | - | |
84 | | - | |
85 | | - | |
| 82 | + | |
| 83 | + | |
86 | 84 | | |
87 | 85 | | |
88 | 86 | | |
| |||
317 | 315 | | |
318 | 316 | | |
319 | 317 | | |
320 | | - | |
| 318 | + | |
321 | 319 | | |
322 | | - | |
323 | | - | |
324 | | - | |
325 | | - | |
| 320 | + | |
| 321 | + | |
326 | 322 | | |
327 | 323 | | |
328 | 324 | | |
| |||
493 | 489 | | |
494 | 490 | | |
495 | 491 | | |
496 | | - | |
| 492 | + | |
497 | 493 | | |
498 | 494 | | |
499 | 495 | | |
| |||
503 | 499 | | |
504 | 500 | | |
505 | 501 | | |
506 | | - | |
507 | | - | |
508 | | - | |
509 | | - | |
| 502 | + | |
| 503 | + | |
510 | 504 | | |
511 | 505 | | |
512 | 506 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
| 12 | + | |
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
| |||
276 | 276 | | |
277 | 277 | | |
278 | 278 | | |
279 | | - | |
| 279 | + | |
280 | 280 | | |
281 | 281 | | |
282 | 282 | | |
| |||
0 commit comments