Security fix:

"Pack Blender Libraries" now first does a check if the .blend files are all used
with relative paths. This to prevent bad things happen on unpacking.
This commit is contained in:
Ton Roosendaal
2013-01-12 11:59:22 +00:00
parent 7db00f0826
commit 129fb516f4

View File

@@ -553,7 +553,7 @@ int unpackLibraries(Main *bmain, ReportList *reports)
if (newname != NULL) { if (newname != NULL) {
ret_value = RET_OK; ret_value = RET_OK;
printf("Saved .blend library: %s\n", newname); printf("Unpacked .blend library: %s\n", newname);
freePackedFile(lib->packedfile); freePackedFile(lib->packedfile);
lib->packedfile = NULL; lib->packedfile = NULL;
@@ -570,6 +570,16 @@ void packLibraries(Main *bmain, ReportList *reports)
{ {
Library *lib; Library *lib;
/* test for relativenss */
for (lib = bmain->library.first; lib; lib = lib->id.next)
if (0 == BLI_path_is_rel(lib->name))
break;
if (lib) {
BKE_reportf(reports, RPT_ERROR, "Cannot pack absolute file: '%s'", lib->name);
return;
}
for (lib = bmain->library.first; lib; lib = lib->id.next) for (lib = bmain->library.first; lib; lib = lib->id.next)
if (lib->packedfile == NULL) if (lib->packedfile == NULL)
lib->packedfile = newPackedFile(reports, lib->name, bmain->name); lib->packedfile = newPackedFile(reports, lib->name, bmain->name);