Skip to content

Commit f0038b4

Browse files
committed
Fix conditional in 'file_read' reading past 'offset_end'
1 parent 84ebc4b commit f0038b4

1 file changed

Lines changed: 10 additions & 7 deletions

File tree

src/file.c

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -61,22 +61,25 @@ bool file_read(ByteArray* dst,
6161
byte_array_init(dst, initial_size);
6262

6363
/* Skip initial bytes */
64+
size_t file_pos;
6465
int last_char = 0;
65-
for (size_t i = 0; i < offset_start && last_char != EOF; i++)
66+
for (file_pos = 0; file_pos < offset_start && last_char != EOF; file_pos++)
6667
last_char = fgetc(fp);
6768

6869
/* Read the target bytes from the file, resizing it dynamically */
69-
size_t i;
70-
for (i = 0; last_char != EOF && (offset_end == 0 || i < offset_end); i++) {
71-
if (i >= dst->size && !byte_array_resize(dst, dst->size * 2))
70+
size_t dst_pos;
71+
for (dst_pos = 0;
72+
last_char != EOF && (offset_end == 0 || file_pos < offset_end);
73+
dst_pos++, file_pos++) {
74+
if (dst_pos >= dst->size && !byte_array_resize(dst, dst->size * 2))
7275
return false;
7376

74-
dst->data[i] = last_char = fgetc(fp);
77+
dst->data[dst_pos] = last_char = fgetc(fp);
7578
}
7679

7780
/* Overwrite with the actual length */
78-
assert(i <= dst->size);
79-
dst->size = i;
81+
assert(dst_pos <= dst->size);
82+
dst->size = dst_pos;
8083

8184
return true;
8285
}

0 commit comments

Comments
 (0)