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 changed| 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 | | |
| |||
| 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 | | |
| |||
| 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)