From 3cd8e0fef8ddf724478e7ca896788a4b3577c586 Mon Sep 17 00:00:00 2001 From: Michael Krasnyk Date: Tue, 10 Apr 2018 10:23:04 +0200 Subject: [PATCH] Use 12 octal digits in mtar_raw_header_t::size --- third_party/microtar/src/microtar.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/third_party/microtar/src/microtar.c b/third_party/microtar/src/microtar.c index 8f63c6d48..f19c4afbe 100644 --- a/third_party/microtar/src/microtar.c +++ b/third_party/microtar/src/microtar.c @@ -105,7 +105,7 @@ static int raw_to_header(mtar_header_t *h, const mtar_raw_header_t *rh) { /* Load raw header into header */ sscanf(rh->mode, "%o", &h->mode); sscanf(rh->owner, "%o", &h->owner); - sscanf(rh->size, "%lo", &h->size); + sscanf(rh->size, "%12lo", &h->size); sscanf(rh->mtime, "%o", &h->mtime); h->type = rh->type; strcpy(h->name, rh->name); @@ -332,6 +332,9 @@ int mtar_write_header(mtar_t *tar, const mtar_header_t *h) { int mtar_write_file_header(mtar_t *tar, const char *name, mtar_size_t size) { mtar_header_t h; + if (size >= 0777777777777) { + return MTAR_EFAILURE; + } /* Build header */ memset(&h, 0, sizeof(h)); strcpy(h.name, name);