Commit cfc40d3
committed
Introduce safer encoding and decoding routines for base64.c
This is a follow-up refactoring after 09ec55b and b674211, which has
proved that the encoding and decoding routines used by SCRAM have a
poor interface when it comes to check after buffer overflows. This adds
an extra argument in the shape of the length of the result buffer for
each routine, which is used for overflow checks when encoding or
decoding an input string. The original idea comes from Tom Lane.
As a result of that, the encoding routine can now fail, so all its
callers are adjusted to generate proper error messages in case of
problems.
On failure, the result buffer gets zeroed.
Author: Michael Paquier
Reviewed-by: Daniel Gustafsson
Discussion: https://postgr.es/m/20190623132535.GB1628@paquier.xyz1 parent d5ab9a8 commit cfc40d3
File tree
5 files changed
+210
-46
lines changed- src
- backend/libpq
- common
- include/common
- interfaces/libpq
5 files changed
+210
-46
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
510 | 510 | | |
511 | 511 | | |
512 | 512 | | |
513 | | - | |
514 | | - | |
515 | | - | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
516 | 518 | | |
517 | 519 | | |
518 | 520 | | |
| |||
596 | 598 | | |
597 | 599 | | |
598 | 600 | | |
599 | | - | |
| 601 | + | |
| 602 | + | |
600 | 603 | | |
601 | | - | |
| 604 | + | |
602 | 605 | | |
603 | 606 | | |
604 | 607 | | |
605 | 608 | | |
606 | 609 | | |
607 | 610 | | |
608 | 611 | | |
609 | | - | |
| 612 | + | |
| 613 | + | |
610 | 614 | | |
611 | | - | |
| 615 | + | |
612 | 616 | | |
613 | 617 | | |
614 | 618 | | |
615 | 619 | | |
616 | | - | |
| 620 | + | |
| 621 | + | |
617 | 622 | | |
618 | | - | |
| 623 | + | |
619 | 624 | | |
620 | 625 | | |
621 | 626 | | |
| |||
649 | 654 | | |
650 | 655 | | |
651 | 656 | | |
652 | | - | |
653 | | - | |
| 657 | + | |
| 658 | + | |
| 659 | + | |
| 660 | + | |
| 661 | + | |
| 662 | + | |
| 663 | + | |
| 664 | + | |
| 665 | + | |
| 666 | + | |
| 667 | + | |
| 668 | + | |
| 669 | + | |
| 670 | + | |
654 | 671 | | |
655 | 672 | | |
656 | 673 | | |
| |||
1144 | 1161 | | |
1145 | 1162 | | |
1146 | 1163 | | |
1147 | | - | |
1148 | | - | |
| 1164 | + | |
| 1165 | + | |
| 1166 | + | |
| 1167 | + | |
| 1168 | + | |
| 1169 | + | |
| 1170 | + | |
| 1171 | + | |
| 1172 | + | |
1149 | 1173 | | |
1150 | 1174 | | |
1151 | 1175 | | |
| |||
1170 | 1194 | | |
1171 | 1195 | | |
1172 | 1196 | | |
| 1197 | + | |
1173 | 1198 | | |
1174 | 1199 | | |
1175 | 1200 | | |
| |||
1234 | 1259 | | |
1235 | 1260 | | |
1236 | 1261 | | |
1237 | | - | |
| 1262 | + | |
| 1263 | + | |
| 1264 | + | |
1238 | 1265 | | |
1239 | | - | |
| 1266 | + | |
| 1267 | + | |
| 1268 | + | |
1240 | 1269 | | |
1241 | 1270 | | |
1242 | 1271 | | |
| |||
1276 | 1305 | | |
1277 | 1306 | | |
1278 | 1307 | | |
1279 | | - | |
1280 | | - | |
| 1308 | + | |
| 1309 | + | |
| 1310 | + | |
| 1311 | + | |
1281 | 1312 | | |
1282 | 1313 | | |
1283 | 1314 | | |
| |||
1322 | 1353 | | |
1323 | 1354 | | |
1324 | 1355 | | |
1325 | | - | |
| 1356 | + | |
| 1357 | + | |
| 1358 | + | |
1326 | 1359 | | |
1327 | | - | |
| 1360 | + | |
| 1361 | + | |
| 1362 | + | |
| 1363 | + | |
1328 | 1364 | | |
1329 | 1365 | | |
1330 | 1366 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
42 | 42 | | |
43 | 43 | | |
44 | 44 | | |
45 | | - | |
| 45 | + | |
| 46 | + | |
46 | 47 | | |
47 | 48 | | |
48 | | - | |
| 49 | + | |
49 | 50 | | |
50 | 51 | | |
51 | 52 | | |
| |||
65 | 66 | | |
66 | 67 | | |
67 | 68 | | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
68 | 76 | | |
69 | 77 | | |
70 | 78 | | |
| |||
76 | 84 | | |
77 | 85 | | |
78 | 86 | | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
79 | 94 | | |
80 | 95 | | |
81 | 96 | | |
82 | 97 | | |
83 | 98 | | |
84 | 99 | | |
| 100 | + | |
85 | 101 | | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
86 | 106 | | |
87 | 107 | | |
88 | 108 | | |
89 | 109 | | |
90 | 110 | | |
91 | 111 | | |
92 | | - | |
| 112 | + | |
| 113 | + | |
93 | 114 | | |
94 | 115 | | |
95 | | - | |
| 116 | + | |
96 | 117 | | |
97 | 118 | | |
98 | 119 | | |
| |||
109 | 130 | | |
110 | 131 | | |
111 | 132 | | |
112 | | - | |
| 133 | + | |
113 | 134 | | |
114 | 135 | | |
115 | 136 | | |
| |||
126 | 147 | | |
127 | 148 | | |
128 | 149 | | |
129 | | - | |
| 150 | + | |
130 | 151 | | |
131 | 152 | | |
132 | 153 | | |
| |||
139 | 160 | | |
140 | 161 | | |
141 | 162 | | |
142 | | - | |
| 163 | + | |
143 | 164 | | |
144 | 165 | | |
145 | 166 | | |
146 | 167 | | |
147 | 168 | | |
148 | 169 | | |
149 | 170 | | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
150 | 177 | | |
| 178 | + | |
151 | 179 | | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
152 | 184 | | |
| 185 | + | |
153 | 186 | | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
154 | 191 | | |
| 192 | + | |
155 | 193 | | |
156 | 194 | | |
157 | 195 | | |
| |||
163 | 201 | | |
164 | 202 | | |
165 | 203 | | |
166 | | - | |
| 204 | + | |
167 | 205 | | |
168 | 206 | | |
| 207 | + | |
169 | 208 | | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
170 | 213 | | |
171 | 214 | | |
172 | 215 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
198 | 198 | | |
199 | 199 | | |
200 | 200 | | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
201 | 205 | | |
202 | 206 | | |
203 | 207 | | |
| |||
215 | 219 | | |
216 | 220 | | |
217 | 221 | | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
218 | 226 | | |
219 | 227 | | |
220 | | - | |
221 | | - | |
222 | | - | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
223 | 231 | | |
224 | 232 | | |
225 | 233 | | |
| |||
231 | 239 | | |
232 | 240 | | |
233 | 241 | | |
234 | | - | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
235 | 254 | | |
236 | | - | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
237 | 270 | | |
238 | | - | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
239 | 286 | | |
240 | 287 | | |
241 | 288 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
14 | | - | |
15 | | - | |
| 14 | + | |
| 15 | + | |
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
| |||
0 commit comments