int fd = -1;
char *file = NULL;
int i, ret = 0;
+ int is_file_mode = 0;
for (i = 0; i < DFU_ENTRY_LIST_MAXLEN; i++) {
char *entry_name = ctx->dfu_entry_list[i][DFU_INFO_NAME];
strncpy(file, DFU_MOUNT_B_PATH, path_prefix + 1);
strncat(file, entry[DFU_INFO_PATH], path_suffix + 1);
strncat(file, entry[DFU_INFO_NAME], path_name + 1);
+ is_file_mode = 1;
break;
}
default:
fprintf(stderr,
"cannot open %s for target: %s\n", file, name);
fd = -EIO;
+ if (is_file_mode)
+ umount_dev(PATH_B);
}
free(file);
{
char *file;
int fd, ret = 0;
+ int is_file_mode = 0;
switch (*entry[DFU_INFO_MODE]) {
case DFU_INFO_MODE_PARTITION:
strncpy(file, DFU_MOUNT_PATH, path_prefix + 1);
strncat(file, entry[DFU_INFO_PATH], path_suffix + 1);
strncat(file, entry[DFU_INFO_NAME], path_name + 1);
+ is_file_mode = 1;
break;
}
default:
"cannot open %s for target: %s\n",
file, entry[DFU_INFO_NAME]);
ret = -EIO;
+ if (is_file_mode)
+ umount_dev(PATH_A);
+
goto err;
}