forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commitc25a929
committed
Fix JSON error reporting for many cases of erroneous string values.
The majority of error exit cases in json_lex_string() failed toset lex->token_terminator, causing problems for the error contextreporting code: it would see token_terminator less than token_startand do something more or less nuts. In v14 and up the end resultcould be as bad as a crash in report_json_context(). Olderversions accidentally avoided that fate; but all versions produceerror context lines that are far less useful than intended,because they'd stop at the end of the prior token instead ofcontinuing to where the actually-bad input is.To fix, invent some macros that make it less notationally painfulto do the right thing. Also add documentation about what thefunction is actually required to do; and in >= v14, add an assertionin report_json_context about token_terminator being sufficientlyfar advanced.Per report from Nikolay Shaplov. Back-patch to all supportedversions.Discussion:https://postgr.es/m/7332649.x5DLKWyVIX@thinkpad-pgpro1 parent62a91a1 commitc25a929
File tree
3 files changed
+57
-32
lines changed- src
- backend/utils/adt
- test/regress/expected
3 files changed
+57
-32
lines changedLines changed: 27 additions & 2 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
750 | 750 |
| |
751 | 751 |
| |
752 | 752 |
| |
| 753 | + | |
| 754 | + | |
| 755 | + | |
| 756 | + | |
| 757 | + | |
| 758 | + | |
| 759 | + | |
753 | 760 |
| |
754 | 761 |
| |
755 | 762 |
| |
| |||
837 | 844 |
| |
838 | 845 |
| |
839 | 846 |
| |
| 847 | + | |
| 848 | + | |
840 | 849 |
| |
841 | 850 |
| |
842 | 851 |
| |
843 | 852 |
| |
844 | 853 |
| |
845 | 854 |
| |
| 855 | + | |
846 | 856 |
| |
847 | 857 |
| |
848 | 858 |
| |
849 | 859 |
| |
850 | 860 |
| |
851 | 861 |
| |
| 862 | + | |
| 863 | + | |
852 | 864 |
| |
853 | 865 |
| |
854 | 866 |
| |
855 | 867 |
| |
856 | 868 |
| |
| 869 | + | |
857 | 870 |
| |
858 | 871 |
| |
859 | 872 |
| |
860 | 873 |
| |
861 | 874 |
| |
| 875 | + | |
| 876 | + | |
862 | 877 |
| |
863 | 878 |
| |
864 | 879 |
| |
865 | 880 |
| |
866 | 881 |
| |
| 882 | + | |
867 | 883 |
| |
868 | 884 |
| |
869 | 885 |
| |
| |||
875 | 891 |
| |
876 | 892 |
| |
877 | 893 |
| |
| 894 | + | |
878 | 895 |
| |
879 | 896 |
| |
880 | 897 |
| |
| |||
898 | 915 |
| |
899 | 916 |
| |
900 | 917 |
| |
| 918 | + | |
901 | 919 |
| |
902 | 920 |
| |
903 | 921 |
| |
904 | 922 |
| |
905 | 923 |
| |
906 | 924 |
| |
907 |
| - | |
908 | 925 |
| |
909 | 926 |
| |
910 | 927 |
| |
911 | 928 |
| |
912 | 929 |
| |
| 930 | + | |
| 931 | + | |
913 | 932 |
| |
914 | 933 |
| |
915 | 934 |
| |
916 | 935 |
| |
917 | 936 |
| |
918 | 937 |
| |
| 938 | + | |
919 | 939 |
| |
920 | 940 |
| |
921 | 941 |
| |
| |||
968 | 988 |
| |
969 | 989 |
| |
970 | 990 |
| |
971 |
| - | |
972 | 991 |
| |
973 | 992 |
| |
974 | 993 |
| |
975 | 994 |
| |
| 995 | + | |
| 996 | + | |
976 | 997 |
| |
977 | 998 |
| |
978 | 999 |
| |
979 | 1000 |
| |
980 | 1001 |
| |
| 1002 | + | |
981 | 1003 |
| |
982 | 1004 |
| |
983 | 1005 |
| |
984 | 1006 |
| |
985 | 1007 |
| |
986 | 1008 |
| |
987 | 1009 |
| |
| 1010 | + | |
| 1011 | + | |
988 | 1012 |
| |
989 | 1013 |
| |
990 | 1014 |
| |
991 | 1015 |
| |
992 | 1016 |
| |
| 1017 | + | |
993 | 1018 |
| |
994 | 1019 |
| |
995 | 1020 |
| |
|
Lines changed: 12 additions & 12 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
41 | 41 |
| |
42 | 42 |
| |
43 | 43 |
| |
44 |
| - | |
| 44 | + | |
45 | 45 |
| |
46 | 46 |
| |
47 | 47 |
| |
48 |
| - | |
| 48 | + | |
49 | 49 |
| |
50 | 50 |
| |
51 | 51 |
| |
52 |
| - | |
| 52 | + | |
53 | 53 |
| |
54 | 54 |
| |
55 | 55 |
| |
56 |
| - | |
| 56 | + | |
57 | 57 |
| |
58 | 58 |
| |
59 | 59 |
| |
| |||
106 | 106 |
| |
107 | 107 |
| |
108 | 108 |
| |
109 |
| - | |
| 109 | + | |
110 | 110 |
| |
111 | 111 |
| |
112 | 112 |
| |
| |||
144 | 144 |
| |
145 | 145 |
| |
146 | 146 |
| |
147 |
| - | |
| 147 | + | |
148 | 148 |
| |
149 | 149 |
| |
150 | 150 |
| |
| |||
165 | 165 |
| |
166 | 166 |
| |
167 | 167 |
| |
168 |
| - | |
| 168 | + | |
169 | 169 |
| |
170 | 170 |
| |
171 | 171 |
| |
172 | 172 |
| |
173 | 173 |
| |
174 |
| - | |
| 174 | + | |
175 | 175 |
| |
176 | 176 |
| |
177 | 177 |
| |
178 | 178 |
| |
179 | 179 |
| |
180 |
| - | |
| 180 | + | |
181 | 181 |
| |
182 | 182 |
| |
183 | 183 |
| |
184 | 184 |
| |
185 | 185 |
| |
186 |
| - | |
| 186 | + | |
187 | 187 |
| |
188 | 188 |
| |
189 | 189 |
| |
| |||
208 | 208 |
| |
209 | 209 |
| |
210 | 210 |
| |
211 |
| - | |
| 211 | + | |
212 | 212 |
| |
213 | 213 |
| |
214 | 214 |
| |
| |||
238 | 238 |
| |
239 | 239 |
| |
240 | 240 |
| |
241 |
| - | |
| 241 | + | |
242 | 242 |
| |
243 | 243 |
| |
244 | 244 |
| |
|
Lines changed: 18 additions & 18 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
35 | 35 |
| |
36 | 36 |
| |
37 | 37 |
| |
38 |
| - | |
| 38 | + | |
39 | 39 |
| |
40 | 40 |
| |
41 | 41 |
| |
42 |
| - | |
| 42 | + | |
43 | 43 |
| |
44 | 44 |
| |
45 | 45 |
| |
46 |
| - | |
| 46 | + | |
47 | 47 |
| |
48 | 48 |
| |
49 | 49 |
| |
50 |
| - | |
| 50 | + | |
51 | 51 |
| |
52 | 52 |
| |
53 | 53 |
| |
54 |
| - | |
| 54 | + | |
55 | 55 |
| |
56 | 56 |
| |
57 | 57 |
| |
| |||
86 | 86 |
| |
87 | 87 |
| |
88 | 88 |
| |
89 |
| - | |
| 89 | + | |
90 | 90 |
| |
91 | 91 |
| |
92 | 92 |
| |
| |||
102 | 102 |
| |
103 | 103 |
| |
104 | 104 |
| |
105 |
| - | |
| 105 | + | |
106 | 106 |
| |
107 | 107 |
| |
108 | 108 |
| |
| |||
140 | 140 |
| |
141 | 141 |
| |
142 | 142 |
| |
143 |
| - | |
| 143 | + | |
144 | 144 |
| |
145 | 145 |
| |
146 | 146 |
| |
147 | 147 |
| |
148 | 148 |
| |
149 | 149 |
| |
150 | 150 |
| |
151 |
| - | |
| 151 | + | |
152 | 152 |
| |
153 | 153 |
| |
154 | 154 |
| |
155 | 155 |
| |
156 | 156 |
| |
157 | 157 |
| |
158 |
| - | |
| 158 | + | |
159 | 159 |
| |
160 | 160 |
| |
161 | 161 |
| |
162 | 162 |
| |
163 | 163 |
| |
164 |
| - | |
| 164 | + | |
165 | 165 |
| |
166 | 166 |
| |
167 | 167 |
| |
168 | 168 |
| |
169 | 169 |
| |
170 |
| - | |
| 170 | + | |
171 | 171 |
| |
172 | 172 |
| |
173 | 173 |
| |
174 | 174 |
| |
175 | 175 |
| |
176 |
| - | |
| 176 | + | |
177 | 177 |
| |
178 | 178 |
| |
179 | 179 |
| |
180 | 180 |
| |
181 | 181 |
| |
182 |
| - | |
| 182 | + | |
183 | 183 |
| |
184 | 184 |
| |
185 | 185 |
| |
186 | 186 |
| |
187 | 187 |
| |
188 | 188 |
| |
189 |
| - | |
| 189 | + | |
190 | 190 |
| |
191 | 191 |
| |
192 | 192 |
| |
| |||
204 | 204 |
| |
205 | 205 |
| |
206 | 206 |
| |
207 |
| - | |
| 207 | + | |
208 | 208 |
| |
209 | 209 |
| |
210 | 210 |
| |
| |||
216 | 216 |
| |
217 | 217 |
| |
218 | 218 |
| |
219 |
| - | |
| 219 | + | |
220 | 220 |
| |
221 | 221 |
| |
222 | 222 |
| |
| |||
234 | 234 |
| |
235 | 235 |
| |
236 | 236 |
| |
237 |
| - | |
| 237 | + | |
238 | 238 |
| |
239 | 239 |
| |
240 | 240 |
| |
|
0 commit comments
Comments
(0)