- /* Note that len starts at 1, it is not an index. */
- for (len = 1; offset + len <= elf->section_names_size; ++len) {
- switch (fgetc(elf->file)) {
- case EOF:
+
+ to_read = elf->section_names_size - offset;
+
+ /* Find first \0 after or at current location, remember len. */
+ for (;;) {
+ char buf[BUF_LEN];
+ ssize_t read_len;
+ size_t i;
+
+ if (!to_read) {
+ goto error;
+ }
+ read_len = lttng_ust_read(elf->fd, buf,
+ min_t(size_t, BUF_LEN, to_read));
+ if (read_len <= 0) {