From da056fdc5bc781a38e13078d23eb15f5cb6c1ae3 Mon Sep 17 00:00:00 2001 From: Ethan Yonker Date: Wed, 5 Jul 2017 22:10:24 -0500 Subject: libtar: Fix restore of e4crypt policies Change-Id: I457356069330c38299fd326181c1c88b12a08dbd --- libtar/block.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/libtar/block.c b/libtar/block.c index a94ba445d..8b2205933 100644 --- a/libtar/block.c +++ b/libtar/block.c @@ -347,11 +347,13 @@ th_read(TAR *t) { start += E4CRYPT_TAG_LEN; char *end = strchr(start, '\n'); + if(!end) + end = strchr(start, '\0'); if(end) { - t->th_buf.e4crypt_policy = strndup(start, end-start); + t->th_buf.e4crypt_policy = strndup(start, end-start); #ifdef DEBUG - printf(" th_read(): E4Crypt policy detected: %s\n", t->th_buf.e4crypt_policy); + printf(" th_read(): E4Crypt policy detected: %s\n", t->th_buf.e4crypt_policy); #endif } } @@ -563,7 +565,7 @@ th_write(TAR *t) #endif /* setup size - EXT header has format "*size of this whole tag as ascii numbers* *space* *content* *newline* */ // size newline - sz = E4CRYPT_TAG_LEN + EXT4_KEY_DESCRIPTOR_HEX + 3 + 1; + sz = E4CRYPT_TAG_LEN + strlen(t->th_buf.e4crypt_policy) + 3 + 1; if(sz >= 100) // another ascci digit for size ++sz; -- cgit v1.2.3