Skip to content

Commit 054926a

Browse files
committed
Save/restore file device_id in scap files
1 parent 9b6ef8e commit 054926a

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

userspace/libscap/scap_fds.c

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,8 @@ uint32_t scap_fd_info_len(scap_fdinfo *fdi)
234234
break;
235235
case SCAP_FD_FILE_V2:
236236
res += sizeof(uint32_t) + // open_flags
237-
(uint32_t)strnlen(fdi->info.regularinfo.fname, SCAP_MAX_PATH_SIZE) + 2;
237+
(uint32_t)strnlen(fdi->info.regularinfo.fname, SCAP_MAX_PATH_SIZE) + 2 +
238+
sizeof(uint32_t); // dev
238239
break;
239240
case SCAP_FD_FIFO:
240241
case SCAP_FD_FILE:
@@ -343,6 +344,11 @@ int32_t scap_fd_write_to_disk(scap_t *handle, scap_fdinfo *fdi, scap_dumper_t *d
343344
snprintf(handle->m_lasterr, SCAP_LASTERR_SIZE, "error writing to file (fi1)");
344345
return SCAP_FAILURE;
345346
}
347+
if(scap_dump_write(d, &(fdi->info.regularinfo.dev), sizeof(uint32_t)) != sizeof(uint32_t))
348+
{
349+
snprintf(handle->m_lasterr, SCAP_LASTERR_SIZE, "error writing to file (dev)");
350+
return SCAP_FAILURE;
351+
}
346352
break;
347353
case SCAP_FD_FIFO:
348354
case SCAP_FD_FILE:
@@ -516,6 +522,16 @@ uint32_t scap_fd_read_from_disk(scap_t *handle, OUT scap_fdinfo *fdi, OUT size_t
516522

517523
(*nbytes) += sizeof(uint32_t);
518524
res = scap_fd_read_fname_from_disk(handle, fdi->info.regularinfo.fname, nbytes, f);
525+
if (sub_len && (*nbytes + sizeof(uint32_t)) > sub_len)
526+
{
527+
break;
528+
}
529+
if(gzread(f, &(fdi->info.regularinfo.dev), sizeof(uint32_t)) != sizeof(uint32_t))
530+
{
531+
snprintf(handle->m_lasterr, SCAP_LASTERR_SIZE, "error reading the fd info from file (dev)");
532+
return SCAP_FAILURE;
533+
}
534+
(*nbytes) += sizeof(uint32_t);
519535
break;
520536
case SCAP_FD_FIFO:
521537
case SCAP_FD_FILE:

0 commit comments

Comments
 (0)