Blame blender-2.63a-cve.patch
|
Jochen Schmitt |
8361a9c |
diff -up blender-2.63a/source/blender/blenkernel/intern/blender.c.cve blender-2.63a/source/blender/blenkernel/intern/blender.c
|
|
Jochen Schmitt |
8361a9c |
--- blender-2.63a/source/blender/blenkernel/intern/blender.c.cve 2012-05-10 16:50:20.000000000 +0200
|
|
Jochen Schmitt |
8361a9c |
+++ blender-2.63a/source/blender/blenkernel/intern/blender.c 2012-09-07 10:10:05.518999947 +0200
|
|
Jochen Schmitt |
8361a9c |
@@ -40,6 +40,7 @@
|
|
Jochen Schmitt |
8361a9c |
# define write _write
|
|
Jochen Schmitt |
8361a9c |
#endif
|
|
Jochen Schmitt |
8361a9c |
|
|
Jochen Schmitt |
8361a9c |
+#include <errno.h>
|
|
Jochen Schmitt |
8361a9c |
#include <stdlib.h>
|
|
Jochen Schmitt |
8361a9c |
#include <stdio.h>
|
|
Jochen Schmitt |
8361a9c |
#include <stddef.h>
|
|
Jochen Schmitt |
8361a9c |
@@ -706,7 +707,8 @@ void BKE_undo_save_quit(void)
|
|
Jochen Schmitt |
8361a9c |
{
|
|
Jochen Schmitt |
8361a9c |
UndoElem *uel;
|
|
Jochen Schmitt |
8361a9c |
MemFileChunk *chunk;
|
|
Jochen Schmitt |
8361a9c |
- int file;
|
|
Jochen Schmitt |
8361a9c |
+ int file = -1;
|
|
Jochen Schmitt |
8361a9c |
+ int flags = O_BINARY+O_WRONLY+O_CREAT+O_TRUNC;
|
|
Jochen Schmitt |
8361a9c |
char str[FILE_MAX];
|
|
Jochen Schmitt |
8361a9c |
|
|
Jochen Schmitt |
8361a9c |
if ( (U.uiflag & USER_GLOBALUNDO)==0) return;
|
|
Jochen Schmitt |
8361a9c |
@@ -722,10 +724,16 @@ void BKE_undo_save_quit(void)
|
|
Jochen Schmitt |
8361a9c |
|
|
Jochen Schmitt |
8361a9c |
BLI_make_file_string("/", str, BLI_temporary_dir(), "quit.blend");
|
|
Jochen Schmitt |
8361a9c |
|
|
Jochen Schmitt |
8361a9c |
- file = BLI_open(str,O_BINARY+O_WRONLY+O_CREAT+O_TRUNC, 0666);
|
|
Jochen Schmitt |
8361a9c |
- if (file == -1) {
|
|
Jochen Schmitt |
8361a9c |
- //XXX error("Unable to save %s, check you have permissions", str);
|
|
Jochen Schmitt |
8361a9c |
- return;
|
|
Jochen Schmitt |
8361a9c |
+ while (file == -1) {
|
|
Jochen Schmitt |
8361a9c |
+ file = BLI_open(str,flags, 0666);
|
|
Jochen Schmitt |
8361a9c |
+ if (file == -1) {
|
|
Jochen Schmitt |
8361a9c |
+ if (errno == EEXIST) {
|
|
Jochen Schmitt |
8361a9c |
+ flags ^= O_CREAT;
|
|
Jochen Schmitt |
8361a9c |
+ } else {
|
|
Jochen Schmitt |
8361a9c |
+ //XXX error("Unable to save %s, check you have permissions", str);
|
|
Jochen Schmitt |
8361a9c |
+ return;
|
|
Jochen Schmitt |
8361a9c |
+ }
|
|
Jochen Schmitt |
8361a9c |
+ }
|
|
Jochen Schmitt |
8361a9c |
}
|
|
Jochen Schmitt |
8361a9c |
|
|
Jochen Schmitt |
8361a9c |
chunk= uel->memfile.chunks.first;
|