Skip to content

Commit 000b870

Browse files
committed
internal/witness: return 400 for badly formatted checkpoints
Fixes #61
1 parent 0e276a3 commit 000b870

2 files changed

Lines changed: 37 additions & 7 deletions

File tree

cmd/litewitness/testdata/litewitness.txt

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,36 @@ HTTP 409
204204
body == "5\n"
205205

206206

207+
# Syntactically invalid note (no signature section).
208+
POST http://localhost:7380/add-checkpoint
209+
```
210+
old 5
211+
212+
sigsum.org/v1/tree/4d6d8825a6bb689d459628312889dfbb0bcd41b5211d9e1ce768b0ff0309e562
213+
5
214+
QrtXrQZCCvpIgsSmOsah7HdICzMLLyDfxToMql9WTjY=
215+
```
216+
HTTP 400
217+
[Asserts]
218+
body contains "invalid input"
219+
220+
221+
# Correctly signed note with an invalid checkpoint body.
222+
POST http://localhost:7380/add-checkpoint
223+
```
224+
old 5
225+
226+
sigsum.org/v1/tree/4d6d8825a6bb689d459628312889dfbb0bcd41b5211d9e1ce768b0ff0309e562
227+
five
228+
KgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
229+
230+
— sigsum.org/v1/tree/4d6d8825a6bb689d459628312889dfbb0bcd41b5211d9e1ce768b0ff0309e562 UgIom4JTC2MerrFcJ5xDcWHzRPVB6zzGBIw4OFqcKDflqjH4q4xY5vMxUxyczvdIlEwFYf7ivQU4KoWan2bLmzLx0go=
231+
```
232+
HTTP 400
233+
[Asserts]
234+
body contains "invalid input"
235+
236+
207237
-- index.hurl --
208238
GET http://localhost:7380/
209239
HTTP 200

internal/witness/witness.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -171,17 +171,17 @@ func (w *Witness) serveAddCheckpoint(rw http.ResponseWriter, r *http.Request) {
171171
w.metrics.KnownLogs.Set(float64(n))
172172
}
173173

174-
switch err {
175-
case errUnknownLog:
174+
switch {
175+
case errors.Is(err, errUnknownLog):
176176
http.Error(rw, err.Error(), http.StatusNotFound)
177177
return
178-
case errInvalidSignature, errWrongBastion:
178+
case errors.Is(err, errInvalidSignature), errors.Is(err, errWrongBastion):
179179
http.Error(rw, err.Error(), http.StatusForbidden)
180180
return
181-
case errBadRequest:
181+
case errors.Is(err, errBadRequest):
182182
http.Error(rw, err.Error(), http.StatusBadRequest)
183183
return
184-
case errProof:
184+
case errors.Is(err, errProof):
185185
http.Error(rw, err.Error(), http.StatusUnprocessableEntity)
186186
return
187187
}
@@ -257,11 +257,11 @@ func (w *Witness) processAddCheckpointRequest(body []byte, bastion string) (cosi
257257
return nil, errInvalidSignature
258258
}
259259
if err != nil {
260-
return nil, err
260+
return nil, fmt.Errorf("%w: %w", errBadRequest, err)
261261
}
262262
c, err := torchwood.ParseCheckpoint(n.Text)
263263
if err != nil {
264-
return nil, err
264+
return nil, fmt.Errorf("%w: %w", errBadRequest, err)
265265
}
266266
l = l.With("size", c.N)
267267
labels["progress"] = "false"

0 commit comments

Comments
 (0)