== bugfix ==
fix for [#6950] Blender crashes when .blog file top line is 160 characters or more - made sure BLI_convertstringcode doesn't return more than 240 chars - went through all callers and fixed places where string passed to BLI_convertstringcode was too short - TODO: look into increasing sample->name and sound->name too, I prevented crashes, but filename might get shortened.
This commit is contained in:
@@ -1004,10 +1004,10 @@ int BPY_menu_do_python( short menutype, int event )
|
||||
}
|
||||
|
||||
if( pym->dir ) { /* script is in U.pythondir */
|
||||
char upythondir[FILE_MAXDIR];
|
||||
char upythondir[FILE_MAX];
|
||||
|
||||
/* dirs in Blender can be "//", which has a special meaning */
|
||||
BLI_strncpy(upythondir, U.pythondir, FILE_MAXDIR);
|
||||
BLI_strncpy(upythondir, U.pythondir, FILE_MAX);
|
||||
BLI_convertstringcode(upythondir, G.sce, 0); /* if so, this expands it */
|
||||
BLI_make_file_string( "/", filestr, upythondir, pym->filename );
|
||||
}
|
||||
|
||||
@@ -457,7 +457,7 @@ static int bpymenu_CreateFromFile( void )
|
||||
{
|
||||
FILE *fp;
|
||||
char line[255], w1[255], w2[255], tooltip[255], *tip;
|
||||
char upythondir[FILE_MAXDIR];
|
||||
char upythondir[FILE_MAX];
|
||||
char *homedir = NULL;
|
||||
int parsing, version, is_userdir;
|
||||
short group;
|
||||
@@ -494,13 +494,13 @@ static int bpymenu_CreateFromFile( void )
|
||||
w1[0] = '\0';
|
||||
fscanf( fp, "# User defined scripts dir: %[^\n]\n", w1 );
|
||||
|
||||
BLI_strncpy(upythondir, U.pythondir, FILE_MAXDIR);
|
||||
BLI_convertstringcode(upythondir, G.sce, 0);
|
||||
BLI_strncpy(upythondir, U.pythondir, FILE_MAX);
|
||||
BLI_convertstringcode(upythondir, G.sce, 0);
|
||||
|
||||
if( strcmp( w1, upythondir ) != 0 )
|
||||
return -1;
|
||||
if( strcmp( w1, upythondir ) != 0 )
|
||||
return -1;
|
||||
|
||||
w1[0] = '\0';
|
||||
w1[0] = '\0';
|
||||
|
||||
while( fgets( line, 255, fp ) ) { /* parsing file lines */
|
||||
|
||||
@@ -604,9 +604,9 @@ static void bpymenu_WriteDataFile( void )
|
||||
if (U.pythondir[0] != '\0' &&
|
||||
strcmp(U.pythondir, "/") != 0 && strcmp(U.pythondir, "//") != 0)
|
||||
{
|
||||
char upythondir[FILE_MAXDIR];
|
||||
char upythondir[FILE_MAX];
|
||||
|
||||
BLI_strncpy(upythondir, U.pythondir, FILE_MAXDIR);
|
||||
BLI_strncpy(upythondir, U.pythondir, FILE_MAX);
|
||||
BLI_convertstringcode(upythondir, G.sce, 0);
|
||||
fprintf( fp, "# User defined scripts dir: %s\n", upythondir );
|
||||
}
|
||||
@@ -940,7 +940,7 @@ static int bpymenu_GetStatMTime( const char *name, int is_file, time_t * mtime )
|
||||
|
||||
#ifdef WIN32
|
||||
if (is_file) {
|
||||
result = stat( name, &st );
|
||||
result = stat( name, &st );
|
||||
} else {
|
||||
/* needed for win32 only, remove trailing slash */
|
||||
char name_stat[FILE_MAX];
|
||||
@@ -976,8 +976,8 @@ static int bpymenu_GetStatMTime( const char *name, int is_file, time_t * mtime )
|
||||
int BPyMenu_Init( int usedir )
|
||||
{
|
||||
char fname[FILE_MAXDIR];
|
||||
char dirname[FILE_MAXDIR];
|
||||
char upythondir[FILE_MAXDIR];
|
||||
char dirname[FILE_MAX];
|
||||
char upythondir[FILE_MAX];
|
||||
char *upydir = U.pythondir, *sdir = NULL;
|
||||
time_t time_dir1 = 0, time_dir2 = 0, time_file = 0;
|
||||
int stat_dir1 = 0, stat_dir2 = 0, stat_file = 0;
|
||||
@@ -1005,14 +1005,14 @@ int BPyMenu_Init( int usedir )
|
||||
upydir = NULL;
|
||||
}
|
||||
else {
|
||||
BLI_strncpy(upythondir, upydir, FILE_MAXDIR);
|
||||
BLI_strncpy(upythondir, upydir, FILE_MAX);
|
||||
BLI_convertstringcode(upythondir, G.sce, 0);
|
||||
}
|
||||
|
||||
sdir = bpy_gethome(1);
|
||||
|
||||
if (sdir) {
|
||||
BLI_strncpy(dirname, sdir, FILE_MAXDIR);
|
||||
BLI_strncpy(dirname, sdir, FILE_MAX);
|
||||
stat_dir1 = bpymenu_GetStatMTime( dirname, 0, &time_dir1 );
|
||||
|
||||
if( stat_dir1 < 0 ) {
|
||||
@@ -1098,7 +1098,7 @@ the user defined Python scripts dir.\n", dirname );
|
||||
fprintf(stderr, "Default scripts dir does not seem valid.\n\n");
|
||||
}
|
||||
if( stat_dir2 == 0 ) {
|
||||
BLI_strncpy(dirname, U.pythondir, FILE_MAXDIR);
|
||||
BLI_strncpy(dirname, U.pythondir, FILE_MAX);
|
||||
BLI_convertstringcode(dirname, G.sce, 0);
|
||||
i = bpymenu_ParseDir( dirname, NULL, 1 );
|
||||
if (i == -1 && DEBUG)
|
||||
|
||||
@@ -371,9 +371,9 @@ static PyObject *Blender_Get( PyObject * self, PyObject * value )
|
||||
}
|
||||
else if(StringEqual(str, "udatadir")) {
|
||||
if (U.pythondir[0] != '\0') {
|
||||
char upydir[FILE_MAXDIR];
|
||||
char upydir[FILE_MAX];
|
||||
|
||||
BLI_strncpy(upydir, U.pythondir, FILE_MAXDIR);
|
||||
BLI_strncpy(upydir, U.pythondir, FILE_MAX);
|
||||
BLI_convertstringcode(upydir, G.sce, 0);
|
||||
|
||||
if (BLI_exists(upydir)) {
|
||||
@@ -397,9 +397,9 @@ static PyObject *Blender_Get( PyObject * self, PyObject * value )
|
||||
}
|
||||
else if( StringEqual( str, "uscriptsdir" ) ) {
|
||||
if (U.pythondir[0] != '\0') {
|
||||
char upydir[FILE_MAXDIR];
|
||||
char upydir[FILE_MAX];
|
||||
|
||||
BLI_strncpy(upydir, U.pythondir, FILE_MAXDIR);
|
||||
BLI_strncpy(upydir, U.pythondir, FILE_MAX);
|
||||
BLI_convertstringcode(upydir, G.sce, 0);
|
||||
|
||||
if( BLI_exists( upydir ) )
|
||||
@@ -410,9 +410,9 @@ static PyObject *Blender_Get( PyObject * self, PyObject * value )
|
||||
/* USER PREFS: */
|
||||
else if( StringEqual( str, "yfexportdir" ) ) {
|
||||
if (U.yfexportdir[0] != '\0') {
|
||||
char yfexportdir[FILE_MAXDIR];
|
||||
char yfexportdir[FILE_MAX];
|
||||
|
||||
BLI_strncpy(yfexportdir, U.yfexportdir, FILE_MAXDIR);
|
||||
BLI_strncpy(yfexportdir, U.yfexportdir, FILE_MAX);
|
||||
BLI_convertstringcode(yfexportdir, G.sce, 0);
|
||||
|
||||
if( BLI_exists( yfexportdir ) )
|
||||
@@ -423,9 +423,9 @@ static PyObject *Blender_Get( PyObject * self, PyObject * value )
|
||||
/* fontsdir */
|
||||
else if( StringEqual( str, "fontsdir" ) ) {
|
||||
if (U.fontdir[0] != '\0') {
|
||||
char fontdir[FILE_MAXDIR];
|
||||
char fontdir[FILE_MAX];
|
||||
|
||||
BLI_strncpy(fontdir, U.fontdir, FILE_MAXDIR);
|
||||
BLI_strncpy(fontdir, U.fontdir, FILE_MAX);
|
||||
BLI_convertstringcode(fontdir, G.sce, 0);
|
||||
|
||||
if( BLI_exists( fontdir ) )
|
||||
@@ -436,9 +436,9 @@ static PyObject *Blender_Get( PyObject * self, PyObject * value )
|
||||
/* texturesdir */
|
||||
else if( StringEqual( str, "texturesdir" ) ) {
|
||||
if (U.textudir[0] != '\0') {
|
||||
char textudir[FILE_MAXDIR];
|
||||
char textudir[FILE_MAX];
|
||||
|
||||
BLI_strncpy(textudir, U.textudir, FILE_MAXDIR);
|
||||
BLI_strncpy(textudir, U.textudir, FILE_MAX);
|
||||
BLI_convertstringcode(textudir, G.sce, 0);
|
||||
|
||||
if( BLI_exists( textudir ) )
|
||||
@@ -449,9 +449,9 @@ static PyObject *Blender_Get( PyObject * self, PyObject * value )
|
||||
/* texpluginsdir */
|
||||
else if( StringEqual( str, "texpluginsdir" ) ) {
|
||||
if (U.plugtexdir[0] != '\0') {
|
||||
char plugtexdir[FILE_MAXDIR];
|
||||
char plugtexdir[FILE_MAX];
|
||||
|
||||
BLI_strncpy(plugtexdir, U.plugtexdir, FILE_MAXDIR);
|
||||
BLI_strncpy(plugtexdir, U.plugtexdir, FILE_MAX);
|
||||
BLI_convertstringcode(plugtexdir, G.sce, 0);
|
||||
|
||||
if( BLI_exists( plugtexdir ) )
|
||||
@@ -462,9 +462,9 @@ static PyObject *Blender_Get( PyObject * self, PyObject * value )
|
||||
/* seqpluginsdir */
|
||||
else if( StringEqual( str, "seqpluginsdir" ) ) {
|
||||
if (U.plugseqdir[0] != '\0') {
|
||||
char plugseqdir[FILE_MAXDIR];
|
||||
char plugseqdir[FILE_MAX];
|
||||
|
||||
BLI_strncpy(plugseqdir, U.plugseqdir, FILE_MAXDIR);
|
||||
BLI_strncpy(plugseqdir, U.plugseqdir, FILE_MAX);
|
||||
BLI_convertstringcode(plugseqdir, G.sce, 0);
|
||||
|
||||
if( BLI_exists( plugseqdir ) )
|
||||
@@ -475,9 +475,9 @@ static PyObject *Blender_Get( PyObject * self, PyObject * value )
|
||||
/* renderdir */
|
||||
else if( StringEqual( str, "renderdir" ) ) {
|
||||
if (U.renderdir[0] != '\0') {
|
||||
char renderdir[FILE_MAXDIR];
|
||||
char renderdir[FILE_MAX];
|
||||
|
||||
BLI_strncpy(renderdir, U.renderdir, FILE_MAXDIR);
|
||||
BLI_strncpy(renderdir, U.renderdir, FILE_MAX);
|
||||
BLI_convertstringcode(renderdir, G.sce, 0);
|
||||
|
||||
if( BLI_exists( renderdir ) )
|
||||
@@ -488,9 +488,9 @@ static PyObject *Blender_Get( PyObject * self, PyObject * value )
|
||||
/* soundsdir */
|
||||
else if( StringEqual( str, "soundsdir" ) ) {
|
||||
if (U.sounddir[0] != '\0') {
|
||||
char sounddir[FILE_MAXDIR];
|
||||
char sounddir[FILE_MAX];
|
||||
|
||||
BLI_strncpy(sounddir, U.sounddir, FILE_MAXDIR);
|
||||
BLI_strncpy(sounddir, U.sounddir, FILE_MAX);
|
||||
BLI_convertstringcode(sounddir, G.sce, 0);
|
||||
|
||||
if( BLI_exists( sounddir ) )
|
||||
@@ -501,9 +501,9 @@ static PyObject *Blender_Get( PyObject * self, PyObject * value )
|
||||
/* tempdir */
|
||||
else if( StringEqual( str, "tempdir" ) ) {
|
||||
if (U.tempdir[0] != '\0') {
|
||||
char tempdir[FILE_MAXDIR];
|
||||
char tempdir[FILE_MAX];
|
||||
|
||||
BLI_strncpy(tempdir, U.tempdir, FILE_MAXDIR);
|
||||
BLI_strncpy(tempdir, U.tempdir, FILE_MAX);
|
||||
BLI_convertstringcode(tempdir, G.sce, 0);
|
||||
|
||||
if( BLI_exists( tempdir ) )
|
||||
@@ -776,9 +776,9 @@ static PyObject *Blender_ShowHelp(PyObject *self, PyObject *script)
|
||||
if (sdir) BLI_make_file_string("/", hspath, sdir, "help_browser.py");
|
||||
|
||||
if (!sdir || (!BLI_exists(hspath) && (U.pythondir[0] != '\0'))) {
|
||||
char upydir[FILE_MAXDIR];
|
||||
char upydir[FILE_MAX];
|
||||
|
||||
BLI_strncpy(upydir, U.pythondir, FILE_MAXDIR);
|
||||
BLI_strncpy(upydir, U.pythondir, FILE_MAX);
|
||||
BLI_convertstringcode(upydir, G.sce, 0);
|
||||
BLI_make_file_string("/", hspath, upydir, "help_browser.py");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user