int ret = -1;
int fd = -1;
char header[TAR_BLOCK_SIZE] = { 0, };
- char name[TAR_ITEM_NAME_SIZE + 1] = { 0, };
+ char uExtendedName[MAX_FILE_PATH + 1] = { 0, };
char size_oct[TAR_SIZE_OF_HEADER] = { 0, };
unsigned long size_dec = 0;
int blknum = 0;
off_t tar_len = 0;
ssize_t rdcnt = 0;
+ if (!item || !tar){
+ LOG("Invalid params\n");
+ return -1;
+ };
//check if gTarFd was opened by tar_open during SS_FSUpdateFile then use it
if (gTarFd > 0)
fd = gTarFd;
}
/* get file name and file size */
- memcpy(name, header, sizeof(name) - 1);
+ if (header[TAR_ITEM_TYPE_FLAG_POS] == GNUTYPE_LONGNAME || header[TAR_ITEM_TYPE_FLAG_POS] == GNUTYPE_LONGLINK) {
+ //rdcnt = read(fd, header, sizeof(header));
+ memset(uExtendedName, 0, sizeof(uExtendedName));
+ rdcnt = read(fd, uExtendedName, sizeof(uExtendedName) - 1);
+ if (rdcnt <= 0) {
+ LOG("read failed. (rdcnt=%d)\n", rdcnt);
+ break;
+ }
+ rdcnt = read(fd, header, sizeof(header));
+ if (rdcnt <= 0) {
+ LOG("read failed. (rdcnt=%d)\n", rdcnt);
+ break;
+ }
+ } else {
+ memset(uExtendedName, 0, sizeof(uExtendedName));
+ memcpy(uExtendedName, header, TAR_ITEM_NAME_SIZE);
+ }
memcpy(size_oct, header + TAR_ITEM_SIZE_POSITION, sizeof(size_oct));
size_dec = strtoul(size_oct, NULL, TAR_SIZE_OF_ITEM_SIZE);
if (size_dec > MAX_ITEM_SIZE) {
+ LOG("ITEM : [%s]\n", item);
LOG("size too big. (size_dec=0x%08X)\n", size_dec);
break;
}
/* check if the file is what we are looking for */
- if (strncmp(name, item, TAR_ITEM_NAME_SIZE) == 0) {
+ if (strncmp(uExtendedName, item, sizeof(uExtendedName) - 1) == 0) {
ret = (int)lseek(fd, 0, SEEK_CUR);
break;
}
int ret = -1;
int fd = -1;
char header[TAR_BLOCK_SIZE] = { 0, };
- char uExtendedName[MAX_FILE_PATH] = { 0, };
+ char uExtendedName[MAX_FILE_PATH + 1] = { 0, };
char size_oct[TAR_SIZE_OF_HEADER] = { 0, };
unsigned long size_dec = 0;
int blknum = 0;
off_t pos = 0;
off_t tar_len = 0;
ssize_t rdcnt = 0;
+
+ if (!item || !tar){
+ LOG("Invalid params\n");
+ return -1;
+ }
LOGL(LOG_SSENGINE, "Tar file Looking for (%s)\n", item);
fd = open(tar, O_RDONLY);
if (fd < 0) {
if (header[TAR_ITEM_TYPE_FLAG_POS] == GNUTYPE_LONGNAME || header[TAR_ITEM_TYPE_FLAG_POS] == GNUTYPE_LONGLINK) {
//rdcnt = read(fd, header, sizeof(header));
memset(uExtendedName, 0, sizeof(uExtendedName));
- rdcnt = read(fd, uExtendedName, sizeof(uExtendedName));
+ rdcnt = read(fd, uExtendedName, sizeof(uExtendedName) - 1);
if (rdcnt <= 0) {
LOG("read failed. (rdcnt=%d)\n", rdcnt);
break;
memset(uExtendedName, 0, sizeof(uExtendedName));
memcpy(uExtendedName, header, TAR_ITEM_NAME_SIZE);
}
- //memcpy(name, header, sizeof(name));
memcpy(size_oct, header + TAR_ITEM_SIZE_POSITION, sizeof(size_oct));
size_dec = strtoul(size_oct, NULL, TAR_SIZE_OF_ITEM_SIZE);
if (size_dec > MAX_ITEM_SIZE) {
+ LOG("ITEM : [%s]\n", item);
LOG("size too big. (size_dec=0x%08X)\n", (unsigned int)size_dec);
break;
}
/* check if the file is what we are looking for */
- if (strncmp(uExtendedName, item, sizeof(uExtendedName) / sizeof(char)) == 0) {
+ if (strncmp(uExtendedName, item, sizeof(uExtendedName) - 1) == 0) {
ret = (int)size_dec;
if ((ret == 0) && (header[TAR_ITEM_TYPE_FLAG_POS] == DIRTYPE))
ret = tar_get_folder_size(tar, item);
char ret = '0';
int fd = -1;
char header[TAR_BLOCK_SIZE] = { 0, };
- char name[TAR_ITEM_NAME_SIZE + 1] = { 0, };
+ char uExtendedName[MAX_FILE_PATH + 1] = { 0, };
char size_oct[TAR_SIZE_OF_HEADER] = { 0, };
unsigned long size_dec = 0;
int blknum = 0;
off_t pos = 0;
off_t tar_len = 0;
ssize_t rdcnt = 0;
+
+ if (!item || !tar){
+ LOG("Invalid params\n");
+ return -1;
+ }
//LOG("Tar file Looking for (%s)\n", item);
fd = open(tar, O_RDONLY);
if (fd < 0) {
}
/* get file name and file size */
- memcpy(name, header, sizeof(name) - 1);
+ if (header[TAR_ITEM_TYPE_FLAG_POS] == GNUTYPE_LONGNAME || header[TAR_ITEM_TYPE_FLAG_POS] == GNUTYPE_LONGLINK) {
+ //rdcnt = read(fd, header, sizeof(header));
+ memset(uExtendedName, 0, sizeof(uExtendedName));
+ rdcnt = read(fd, uExtendedName, sizeof(uExtendedName) - 1);
+ if (rdcnt <= 0) {
+ LOG("read failed. (rdcnt=%d)\n", rdcnt);
+ break;
+ }
+ rdcnt = read(fd, header, sizeof(header));
+ if (rdcnt <= 0) {
+ LOG("read failed. (rdcnt=%d)\n", rdcnt);
+ break;
+ }
+ } else {
+ memset(uExtendedName, 0, sizeof(uExtendedName));
+ memcpy(uExtendedName, header, TAR_ITEM_NAME_SIZE);
+ }
memcpy(size_oct, header + TAR_ITEM_SIZE_POSITION, sizeof(size_oct));
size_dec = strtoul(size_oct, NULL, TAR_SIZE_OF_ITEM_SIZE);
if (size_dec > MAX_ITEM_SIZE) {
+ LOG("ITEM : [%s]\n", item);
LOG("size too big. (size_dec=0x%08X)\n", (unsigned int)size_dec);
ret = -1;
break;
}
/* check if the file is what we are looking for */
- if (strncmp(name, item, TAR_ITEM_NAME_SIZE) == 0) {
+ if (strncmp(uExtendedName, item, sizeof(uExtendedName) - 1) == 0) {
ret = header[TAR_ITEM_TYPE_FLAG_POS];
break;
}
off_t pos = 0;
ssize_t rdcnt = 0;
+ if (!buf){
+ LOG("Invalid params\n");
+ return -1;
+ }
data_size = tar_get_item_size(tar, item);
if (data_size <= 0)
return -1;
int fd = -1;
int ret = 0;
char header[TAR_BLOCK_SIZE] = { 0, };
- char uExtendedName[MAX_FILE_PATH] = { 0, };
+ char uExtendedName[MAX_FILE_PATH + 1] = { 0, };
char size_oct[TAR_SIZE_OF_HEADER] = { 0, };
unsigned long size_dec = 0;
int blknum = 0;
break;
}
/* get file name and file size */
- //memcpy(name, header, sizeof(name));
if (header[TAR_ITEM_TYPE_FLAG_POS] == GNUTYPE_LONGNAME || header[TAR_ITEM_TYPE_FLAG_POS] == GNUTYPE_LONGLINK) {
//rdcnt = read(fd, header, sizeof(header));
memset(uExtendedName, 0, sizeof(uExtendedName));
memcpy(size_oct, header + TAR_ITEM_SIZE_POSITION, sizeof(size_oct));
size_dec = strtoul(size_oct, NULL, TAR_SIZE_OF_ITEM_SIZE);
if (size_dec > MAX_ITEM_SIZE) {
+ LOG("uExtendedName is : [%s]\n", uExtendedName);
LOG("size too big. (size_dec=0x%08X)\n", (unsigned int)size_dec);
ret = -1;
break;
off_t pos = 0;
off_t tar_len = 0;
ssize_t rdcnt = 0;
+
+ if (!item || !tar){
+ LOG("Invalid params\n");
+ return -1;
+ }
LOG("Tar folder Looking for (%s)\n", item);
fd = open(tar, O_RDONLY);
if (fd < 0) {
int getheader = 1; // Asuming initial header is TAR header
char fullname[512] = { 0 };
int ret;
+
+ if (!item || !tar || !path){
+ LOG("Invalid params\n");
+ return -1;
+ }
LOG("Extracting Folder from %s %s to %s\n", tar, item, path);
data_offset = tar_get_item_offset(tar, item);
char err_buf[256];
int fd2;
+ if (!item || !tar || !pathname){
+ LOG("Invalid params\n");
+ return -1;
+ }
if (gTarFd > 0)
fd = gTarFd;
if (fd < 0) {
char *buf = NULL;
char err_buf[256];
int fd2;
+
+ if (!item || !tar || !pathname){
+ LOG("Invalid params\n");
+ return -1;
+ }
data_size = tar_get_item_size(tar, item);
data_offset = tar_get_item_offset(tar, item);