summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--payloads/libpayload/include/libpayload.h1
-rw-r--r--payloads/libpayload/libc/lar.c10
2 files changed, 11 insertions, 0 deletions
diff --git a/payloads/libpayload/include/libpayload.h b/payloads/libpayload/include/libpayload.h
index be4d2a7ba3..8535bd04fa 100644
--- a/payloads/libpayload/include/libpayload.h
+++ b/payloads/libpayload/include/libpayload.h
@@ -247,6 +247,7 @@ int closelar(struct LAR *lar);
struct larent *readlar(struct LAR *lar);
void rewindlar(struct LAR *lar);
int larstat(struct LAR *lar, const char *path, struct larstat *buf);
+void *larfptr(struct LAR *lar, const char *filename);
struct LFILE * lfopen(struct LAR *lar, const char *filename);
int lfread(void *ptr, size_t size, size_t nmemb, struct LFILE *stream);
diff --git a/payloads/libpayload/libc/lar.c b/payloads/libpayload/libc/lar.c
index 65b503d1c8..6ae4052039 100644
--- a/payloads/libpayload/libc/lar.c
+++ b/payloads/libpayload/libc/lar.c
@@ -218,6 +218,16 @@ int larstat(struct LAR *lar, const char *path, struct larstat *buf)
return 0;
}
+void * larfptr(struct LAR *lar, const char *filename)
+{
+ struct lar_header *header = get_header_by_name(lar, filename);
+
+ if (header == NULL)
+ return NULL;
+
+ return (void *) ((u8 *) header + ntohl(header->offset));
+}
+
struct LFILE * lfopen(struct LAR *lar, const char *filename)
{
struct LFILE *file;