summaryrefslogtreecommitdiffstats
path: root/reftable/record.c
diff options
context:
space:
mode:
authorPatrick Steinhardt <ps@pks.im>2024-10-17 06:54:16 +0200
committerTaylor Blau <me@ttaylorr.com>2024-10-17 22:59:56 +0200
commit20590cd287ada9c96efdf804e2bcdac0117c01b8 (patch)
tree585b208d0bbd1263e109212cf3a78c83e2c96985 /reftable/record.c
parentreftable/stack: adapt `stack_filename()` to handle allocation failures (diff)
downloadgit-20590cd287ada9c96efdf804e2bcdac0117c01b8.tar.xz
git-20590cd287ada9c96efdf804e2bcdac0117c01b8.zip
reftable: handle trivial `reftable_buf` errors
Convert the reftable library such that we handle failures with the new `reftable_buf` interfaces. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Taylor Blau <me@ttaylorr.com>
Diffstat (limited to 'reftable/record.c')
-rw-r--r--reftable/record.c32
1 files changed, 24 insertions, 8 deletions
diff --git a/reftable/record.c b/reftable/record.c
index 672c5f909a..fb5652ed57 100644
--- a/reftable/record.c
+++ b/reftable/record.c
@@ -102,7 +102,9 @@ static int decode_string(struct reftable_buf *dest, struct string_view in)
{
int start_len = in.len;
uint64_t tsize = 0;
- int n = get_var_int(&tsize, &in);
+ int n, err;
+
+ n = get_var_int(&tsize, &in);
if (n <= 0)
return -1;
string_view_consume(&in, n);
@@ -110,7 +112,10 @@ static int decode_string(struct reftable_buf *dest, struct string_view in)
return -1;
reftable_buf_reset(dest);
- reftable_buf_add(dest, in.buf, tsize);
+ err = reftable_buf_add(dest, in.buf, tsize);
+ if (err < 0)
+ return err;
+
string_view_consume(&in, tsize);
return start_len - in.len;
@@ -189,7 +194,7 @@ int reftable_decode_key(struct reftable_buf *last_key, uint8_t *extra,
int start_len = in.len;
uint64_t prefix_len = 0;
uint64_t suffix_len = 0;
- int n;
+ int err, n;
n = reftable_decode_keylen(in, &prefix_len, &suffix_len, extra);
if (n < 0)
@@ -200,8 +205,14 @@ int reftable_decode_key(struct reftable_buf *last_key, uint8_t *extra,
prefix_len > last_key->len)
return -1;
- reftable_buf_setlen(last_key, prefix_len);
- reftable_buf_add(last_key, in.buf, suffix_len);
+ err = reftable_buf_setlen(last_key, prefix_len);
+ if (err < 0)
+ return err;
+
+ err = reftable_buf_add(last_key, in.buf, suffix_len);
+ if (err < 0)
+ return err;
+
string_view_consume(&in, suffix_len);
return start_len - in.len;
@@ -1047,9 +1058,12 @@ static int reftable_index_record_copy_from(void *rec, const void *src_rec,
{
struct reftable_index_record *dst = rec;
const struct reftable_index_record *src = src_rec;
+ int err;
reftable_buf_reset(&dst->last_key);
- reftable_buf_add(&dst->last_key, src->last_key.buf, src->last_key.len);
+ err = reftable_buf_add(&dst->last_key, src->last_key.buf, src->last_key.len);
+ if (err < 0)
+ return err;
dst->offset = src->offset;
return 0;
@@ -1090,10 +1104,12 @@ static int reftable_index_record_decode(void *rec, struct reftable_buf key,
{
struct string_view start = in;
struct reftable_index_record *r = rec;
- int n = 0;
+ int err, n = 0;
reftable_buf_reset(&r->last_key);
- reftable_buf_add(&r->last_key, key.buf, key.len);
+ err = reftable_buf_add(&r->last_key, key.buf, key.len);
+ if (err < 0)
+ return err;
n = get_var_int(&r->offset, &in);
if (n < 0)